关于常用的排序算法

时间复杂度为O(N*logN)的常用排序算法总结与Java实现 时间复杂度为O(N*logN)的常用排序算法主要有四个——快速排序、归并排序、堆排序、希尔排序1.快速排序·基本思想    随机的在待排序数组arr中选取一个元素作为标记记为arr[index](有时也直接选择起始位置),然后在arr中从后至前以下标j寻找比arr[index]小的数,然后从前至后以下标i寻找比arr[index]大的数,如果i<j则交换二者的值;重复以上操作,直到i>... 阅读详情

常用的排序算法

排序算法平均时间复杂度
冒泡排序O(n2)
选择排序O(n2)
插入排序O(n2)
希尔排序O(n1.5)
快速排序O(N*logN)
归并排序O(N*logN)
堆排序O(N*logN)
基数排序O(d(n+r))

冒泡排序

所谓冒泡排序 就是比较两个相邻的数,大的下沉小的上浮,这种方法时间复杂度为O(n^2),如果数量级比较高,不适宜用这种方法

public static void MaoPao(){
        int[] a = {5,3,2,3,1,2,3,1};
        int temp;
        for (int i = 0; i < a.length-1; i++) {
            for(int j=a.length-1; j>i; j--){

                if(a[j] < a[j-1]){
                    temp = a[j];
                    a[j] = a[j-1];
                    a[j-1] = temp;
                }
            }
        }
        for (int i = 0; i < a.length; i++) {
            Log.e("MaoPao result",""+a[i]);
        }
    }

选择排序

遍历整个数据找出最大/最小的放到第一个,反复执行这一操作,将数据排序,平均时间复杂的也是O(n^2)

 public static void XuanZe(){
        int[] a = {3,9,5,8,6,4,7,1,2};
        int lenth = a.length;
        for(int i=0;i<lenth-1;i++){

            int minIndex = i;
            for(int j=i+1;j<lenth;j++){
                if(a[j]<a[minIndex]){
                    minIndex = j;
                }
            }
            if(minIndex != i){
                int temp = a[i];
                a[i] = a[minIndex];
                a[minIndex] = temp;
            }
        }

        for (int i = 0; i < a.length; i++) {
            Log.e("XuanZe result",""+a[i]);
        }

    }

插入排序

把整个数组分成两部分,一部分排过序,一部分没有,然后把没有排过序的一个一个插入到对应位置,时间复杂度依然是

public static void ChaRu(){
        int[] a = {3,9,5,8,6,4,7,1,2};
        int lenth = a.length;

        int temp;

        for(int i=0;i<lenth-1;i++){
            for(int j=i+1;j>0;j--){
                if(a[j] >= a[j-1]){
                    break;
                }

                temp = a[j-1];
                a[j-1] = a[j];
                a[j] = temp;
            }
        }


    }
Java常用排序算法 阅读详情

相关推荐

02.1 知识图谱工具 Protege的下载安装与使用

Protege的下载安装与使用 本文是王昊奋老师《知识图谱》系列笔记第2.1篇。 文章目录Protege的下载安装与使用0 相关介绍0.0 Protege相关介绍0.1 Protégé的特点0.2 Protégé的用途1 Protege的下载1.1 准备工作:安装配置JAVA环境1.2 官网下载2 Protege的安装2.1 直接解压缩2.2 双击运行3 Protege的使用实例-创建类...

和而不流 7万+

【排序算法】快速排序

【排序算法】快速排序排序算法平均时间复杂度冒泡排序O(n2)选择排序O(n2)插入排序O(n2)希尔排序O(n1.5)快速排序O(N*logN)归并排序O(N*logN)堆排序O(N*logN)基数排序O(d(n+r))快速排序:时间复杂度:O(nlogn)快速排序是对冒泡排序的一种改进,采用分治的策略,其基本思想:1.先从数列中取出一个数作为基准数;2.将比这个数大的全放在右边,小于等于它的全放...

Mr.王同学 218

【超详细】C#的单例模式

本文详细介绍了C#中的单例设计模式,包括两种实现方式:普通类泛型单例(Singleton<T>)和基于MonoBehaviour的组件单例(MonoSingleton<T>)。单例模式通过私有构造、静态私有实例和公共访问入口确保全局唯一实例,具有节省资源、保证数据一致性等优势。文章分别阐述了两者的核心原理、代码实现、使用场景及注意事项,并提供了日志管理器和音效管理器的具体应用示例。特别强调了多线程安全、初始化时机和避免过度使用等重要原则,为Unity开发中合理运用单例模式提供了全面指导。

grapefruit_lyy的博客 1535

时间复杂度为O(n)的排序算法

排序的数字在一个较小的范围之内,要求时间复杂度为O(n),允许使用辅助内存,只允许使用常量大小辅助空间,不得超过O(n).所以解题思路为创建一个临时数组,数组对应位置记录该数字出现的次数,从而将数字实现了排序。#include&lt;iostream&gt; using namespace std; void SortAges(int ages[],int length); void showA...

qq_29762941的博客 3717

用V E S C 6-M K V I 第六代调速控制器给VESC电调刷固件

文章摘要:本文介绍了一款先进的电机控制器,具备多项创新技术。核心亮点包括三相电流/电压检测、四象限无缝运行、多模式兼容等先进电机控制技术,以及智能感知与安全保护、高效能电源管理、多样化连接与扩展功能。此外,该控制器支持实时数据监测与用户交互,具备开源生态和工业级可靠性,适用于电动载具、机器人及工业领域。用户需注意散热要求和兼容性提示,可通过VESC-Tool软件进行灵活配置。产品可在常竹科技淘宝店购买,并加入技术交流群获取支持。

2403_89422757的博客 1367

redhawk如何看高toggle rate instance

1.图形界面View-Power Map - Toggle Map of Instances。redhawk通过报告和图形界面两种方式查看高toggle rate的instance。2.看warning log,在adsRpt/Warn里,搜toggle rate。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?

m0_61544122的博客 623

时间复杂度为O(N)的常用排序算法总结与Java实现

时间复杂度为O(N)的排序算法主要有三种——桶排序、计数排序与基数排序,后两者是基于桶排序的思想1.桶排序·基本思想    给定一个数组arr,数组内都是整数,整数都是处于0到9之间的。于是可以定义一个大小为10的数组b(这个大小通过极值差+1可以尽量的减少大小),初始值为0,表示10个桶。遍历待排序数组arr,将arr对应的值放在b中对应的位置(即b[arr[i]]++),arr中的3使b[3]...

KevinDYZS的博客 8051

智能测试策略优化:平衡覆盖率、时间和资源

在软件开发过程中,测试是确保软件质量的关键环节。然而,测试工作往往面临着诸多挑战,其中如何在保证测试覆盖率的前提下,合理分配时间和资源是一个核心问题。本文章的目的在于探讨智能测试策略的优化方法,帮助软件测试团队在有限的时间和资源条件下,实现尽可能高的测试覆盖率。文章的范围涵盖了智能测试策略的核心概念、算法原理、数学模型、实际应用案例以及相关工具和资源等方面。本文将按照以下结构进行组织:首先介绍智能测试策略优化的背景和相关概念,包括核心术语和缩略词的定义;

AIGC应用创新大全的博客 620

计数排序:时间复杂度仅为 O(n) 的排序算法

一、简介 计算排序假设 n 个输入元素都是 0 到 k 区间内的一个整数,其中 k 为某个整数。 基本原理: 创建一个长度为 k+1 的数组 count[],它的 count[i] 的值对应输入数组中 i 出现的次数。通过遍历一次输入数组并统计每个元素出现次数,最后遍历 count[] 输出。   二、时间复杂度 计算排序的时间复杂度为 O(n)。 计算排序不是比较排序算法,它没有元...

阿飞的博客 6752

深入剖析 Wenet 下 AISHELL-1 的 run.sh 脚本:从数据准备到模型训练

run.sh脚本用于处理 AISHELL-1 数据集的整个训练和测试流程。我们将逐步分析脚本中的每个部分,包括环境变量、参数设置、各个阶段的执行等。stage: 设置脚本的起始阶段(如数据准备)。stop_stage: 设置脚本的结束阶段。通过对 Wenet 下 AISHELL-1 的run.sh脚本的详细剖析,我们希望你能更好地理解每个步骤的功能及其背后的原理。此脚本不仅为模型训练提供了便利,也为用户自定义和扩展训练流程提供了基础。希望本教程能帮助你顺利完成语音识别项目!

帅小柏的博客 1634

SIMULINK开发项目实例 1000 例专栏之第912例--AC-DC整流器场景:基于PWM整流器拓扑结构的建模:三相电压型PWM整流器(SR)单位功率因数控制仿真

本文详细介绍了使用Simulink和Simscape Electrical搭建三相电压型PWM整流器(VSR)模型的方法。主要内容包括:系统结构设计、主电路拓扑搭建、单位功率因数控制算法实现(含PLL锁相环、dq变换、PI控制器等模块)、参数配置和仿真设置。通过仿真分析验证了该系统能实现输入电流与电压同相位、输出直流电压稳定等特性,体现了PWM整流器的高效性和低谐波优势。文章还提出了增强鲁棒性、多工况测试等优化建议,为电力电子系统设计提供了实用指导。该建模方法对新能源发电、电动汽车充电等领域具有重要意义。

xiaoheshang_123的博客 7798

常用排序算法的java实现

/** * 冒泡排序 * 时间复杂度: 最小 = O(n), 最大 = O(n^2), 平均 = O(n^2) * * @param data 待排序序列 * @return */ public static int[] bubbleSort(int[] data) { if (data == null || data.length == 0 || data.length =...

LittleBeen 288

ArcGIS Pro 3.4 二次开发 - 地理数据库

本文介绍了在ArcGIS Pro SDK 3.4和.NET 8环境下,如何操作地理数据库的多种方法。首先,通过路径打开文件地理数据库,并处理可能出现的异常。其次,使用连接属性或sde文件路径打开企业级地理数据库。此外,还展示了如何从项目项、要素图层中获取地理数据库,以及如何执行SQL语句。最后,文章详细说明了如何从地理数据库中获取单个定义或定义列表,包括表定义、要素类定义、关系类定义和要素数据集定义。这些操作均在后台线程中执行,确保应用程序的响应性。

Winemonk 944

常用排序算法一览表

常用排序算法 类别 排序方法 时间复杂度 空间复杂度 稳定性 平均情况 最好情况 最坏情况 辅助存储 冒泡排序 直接...

墨、砚 257

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

常用八个排序算法性能总结

常用八个排序算法性能比较

菜鸟502的博客 429

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

常用排序算法的复杂度总结

常用排序算法的复杂度归纳:

汝南张公子的博客 362

Python常用的排序算法

常用的排序算法 拿li=[1,3,45,6,78,9,4]来举例 一.冒泡排序 空间复杂度O(n的2次方) 原理:例如你把一组数据从头开始依次遍历过去把最大的或者最小的放在末尾,除了最后一个每个依次进行遍历 def bubble_sort(li): for i in range(len(li)-1): flag = True for j in range(l...

转行程序员 217

常用排序算法思维导图

常用排序算法思维导图

解忧swag的博客 417

常用排序算法总结

 https://www.cnblogs.com/eniac12/p/5329396.html 目录 冒泡排序   鸡尾酒排序   选择排序 插入排序 二分插入排序   希尔排序   归并排序 堆排序 快速排序   我们通常所说的排序算法往往指的是内部排序算法,即数据记录在内存中进行排序。   排序算法大体可分为两种:     一种是比较排序,时间复杂度...

宁静致远 406

常用的排序算法

通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

日暮南城故里的博客 2159

比较常用的排序算法总结

常用的排序 冒泡排序 选择排序 插入排序 桶排序 希尔排序 归并排序 快速排序 基数排序 堆排序 第一 冒泡排序 由于简单直接上代码 for(int i=1;i<=n;i++){ for(int j=i+1;j<=n;j++){ if(a[i]>a[j]) swap(a[i],a[j]);//当前的数大于后面的数,交换 } } 第二 选择排序 每次找到数组中最大或最小的数,将他与前面的数交换 for(int i=1;i<n;i++){ mina=-1;//更新

qq_44665427的博客 256

常用排序算法性能对比

排序算法常用排序算法性能对比冒泡排序 常用排序算法性能对比 冒泡排序

weixin_43250841的博客 111

常用排序算法

每次遍历选择未排序部分的最小值,放到已排序序列末尾。依次比较相邻元素,将较大的元素逐步"冒泡"到右侧。分治策略,选取基准值将数组分为两部分递归排序。统计元素出现次数,适用于整数范围较小的情况。将每个元素插入到已排序序列的合适位置。分治法将数组拆分为最小单元后合并排序。按位排序,从低位到高位依次排序。利用堆数据结构实现选择排序。

龙泉诗 743

8种常用的排序算法

8种常用的排序算法 数据结构中的排序是非常重要的知识,将数据排序是处理数据的基本起手操作。从类型上分排序可以分为内部排序和外部排序,对保存在内存中的数据进行排序成为内部排序,对保存在磁盘上的数据排序称为外部排序。 本文将对内部排序常用的8中排序做一个简单介绍,作为一个程序员,需要熟练掌握这8种常用的排序,理解其排序思想,并能以代码实现。 8种排序中的时间复杂度和空间复杂度一览 可以...

pan16309的博客 1590
上一篇: Android学习(五)——Fragment
下一篇: Android架构进阶(一)——MVP
豪利丶王
博客等级 码龄11年 1粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值