各种排序的优缺点

C语言中的五种基础排序方法及其优缺点 C语言中的五种比较基础的排序方法 阅读详情

一、冒泡排序

  已知一组无序数据a[1]、a[2]、……a[n],需将其按升序排列。首先比较 a[1]与a[2]的值,若a[1]大于a[2]则交换两者的值,否则不变。再比较a[2]与a[3]的值,若a[2]大于a[3]则交换两者的值,否则 不变。再比较a[3]与a[4],以此类推,最后比较a[n-1]与a[n]的值。这样处理一轮后,a[n]的值一定是这组数据中最大的。再对 a[1]~a[n-1]以相同方法处理一轮,则a[n-1]的值一定是a[1]~a[n-1]中最大的。再对a[1]~a[n-2]以相同方法处理一轮, 以此类推。共处理n-1轮后a[1]、a[2]、……a[n]就以升序排列了。

  优点:稳定;

  缺点:慢,每次只能移动相邻两个数据。

二、选择排序

  冒泡排序的改进版。

  每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。

  选择排序是不稳定的排序方法。

  n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果:

  ①初始状态:无序区为R[1..n],有序区为空。

  ②第1趟排序

  在无序区R[1..n]中选出关键字最小的记录R[k],将它与无序区的第1个记录R[1]交换,使R[1..1]和R[2..n]分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区。

  ……

  ③第i趟排序

  第i趟排序开始时,当前有序区和无序区分别为R[1..i-1]和R(1≤i≤n- 1)。该趟排序从当前无序区中选出关键字最小的记录 R[k],将它与无序区的第1个记录R交换,使R[1..i]和R分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区。

  这样,n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果。

  优点:移动数据的次数已知(n-1次);

  缺点:比较次数多。

三、插入排序

  已知一组升序排列数据a[1]、a[2]、……a[n],一组无序数据b[1]、 b[2]、……b[m],需将二者合并成一个升序数列。首先比较b[1]与a[1]的值,若b[1]大于a[1],则跳过,比较b[1]与a[2]的值, 若b[1]仍然大于a[2],则继续跳过,直到b[1]小于a数组中某一数据a[x],则将a[x]~a[n]分别向后移动一位,将b[1]插入到原来 a[x]的位置这就完成了b[1]的插入。b[2]~b[m]用相同方法插入。(若无数组a,可将b[1]当作n=1的数组a)

  优点:稳定,快;

  缺点:比较次数不一定,比较次数越少,插入点后的数据移动越多,特别是当数据总量庞大的时候,但用链表可以解决这个问题。

四、缩小增量排序

  由希尔在1959年提出,又称希尔排序(shell排序)。

  已知一组无序数据a[1]、a[2]、……a[n],需将其按升序排列。发现当n不大 时,插入排序的效果很好。首先取一增量d(d<n),将a[1]、a[1+d]、a[1+2d]……列为第一组,a[2]、a[2+d]、 a[2+2d]……列为第二组……,a[d]、a[2d]、a[3d]……列为最后一组以次类推,在各组内用插入排序,然后取d'<d,重复上述操 作,直到d=1。

  优点:快,数据移动少;

  缺点:不稳定,d的取值是多少,应取多少个不同的值,都无法确切知道,只能凭经验来取。

五、快速排序

  快速排序是目前已知的最快的排序方法。

  已知一组无序数据a[1]、a[2]、……a[n],需将其按升序排列。首先任取数据 a[x]作为基准。比较a[x]与其它数据并排序,使a[x]排在数据的第k位,并且使a[1]~a[k-1]中的每一个数 据<a[x],a[k+1]~a[n]中的每一个数据>a[x],然后采用分治的策略分别对a[1]~a[k-1]和a[k+1]~a[n] 两组数据进行快速排序。

  优点:极快,数据移动少;

  缺点:不稳定。

六、箱排序

  已知一组无序正整数数据a[1]、a[2]、……a[n],需将其按升序排列。首先定义一个数组x[m],且m>=a[1]、a[2]、……a[n],接着循环n次,每次x[a]++.

  优点:快,效率达到O(1)

  缺点:数据范围必须为正整数并且比较小

七、归并排序

  归并排序是多次将两个或两个以上的有序表合并成一个新的有序表。最简单的归并是直接将两个有序的子表合并成一个有序的表。

  归并排序是稳定的排序.即相等的元素的顺序不会改变.如输入记录 1(1) 3(2) 2(3) 2(4) 5(5) (括号中是记录的关键字)时输出的 1(1) 2(3) 2(4) 3(2) 5(5) 中的2 和 2 是按输入的顺序.这对要排序数据包含多个信息而要按其中的某一个信息排序,要求其它信息尽量按输入的顺序排列时很重要.这也是它比快速排序优势的地方.

算法——排序 优缺点比较 排序算法小结 阅读详情

相关推荐

各种排序算法的优缺点(一)

此外,归并排序也是一种原地排序算法(除了递归调用栈外),因为它只需要O(1)的额外空间来存储临时数组(尽管在实际实现中,为了优化性能,可能会使用O(n)的额外空间来存储临时数组)。冒泡排序是一种简单的排序算法,其基本思想是通过重复遍历要排序的数列,比较相邻元素的值,若发现顺序错误则交换它们的位置。通过重复上述过程,较大的元素会逐渐“冒泡”到数组的末尾,而较小的元素则会逐渐“沉底”到数组的开头,因此得名“冒泡排序”。归并排序的时间复杂度是稳定的O(n log n),其中n是数组的大小。

zhu_ing的专栏 1109

各种排序优缺点

转自:http://romyli.iteye.com/blog/761655 一、冒泡排序   已知一组无序数据a[1]、a[2]、……a[n],需将其按升序排列。首先比较 a[1]与a[2]的值,若a[1]大于a[2]则交换两者的值,否则不变。再比较a[2]与a[3]的值,若a[2]大于a[3]则交换两者的值,否则 不变。再比较a[3]与a[4],以此类推,最后比较a[n

sftxlin的专栏 2461

RISC-V详细介绍

文章目录写在前面什么是RISC-VRISC-V诞生的背景ISA霸权摩尔定律的穷途末路穷困潦倒的学者不断增长的指令数量RISC-V架构设计思想如何设计一个好的ISARISC-V之RV32I四个典型特点RISC-V之乘除法指令指令格式用乘法代替常数除法RISC-V之RV64RISC-V的特权架构机器模式监管者模式 写在前面 本文主要基于RISC-V中文手册,其中包括但不限于一些网络的资料。本文版权属于skywf,转载或借用请联系作者。 什么是RISC-V RISC-V(发音为“risk-five”)是一个基于

skywf的博客 3万+

十大排序算法(面试必备)

一万字带你搞明白十大排序算法及各个算法的特点比较,拿下面试

LYJbao的博客 3051

RV1126B芯片实战:如何用这款视觉处理器SoC打造你的第一个AI摄像头项目

本文详细介绍了如何利用瑞芯微RV1126B视觉处理器SoC从零构建AI摄像头项目。涵盖硬件选型、开发环境搭建、ISP配置、AI模型部署及系统集成等关键步骤,帮助开发者高效实现边缘计算方案,特别适合智能安防和工业检测应用。

dropout6artist的博客 931

Robot Arm 机械臂源码解析

由于我们用的是步进电机,运动的时候是一步一步的,并不是平滑的,这里假设在一个平面上面,一个x步进电机,一个y步进电机。那么放大它们所走的轨迹就会是阶梯状的。而它们也只能沿着网格运动。相当于有了一个最小的分辨率,这个分辨率就是一步。如下图所示,如果x,y电机同时走就能走出45度的斜线。在三维空间里面运动也是如此,你应该可以想象的出来;首先,是updateActualPosition,用来时时更新此时的差补位置,得到的是一个路径与时间t的函数(其中路径的范围为0,1,时间范围为0,dist/v)...

爱吃炸鸡的小猪's blog 1万+

常见的几种排序算法及优缺点

常见的几种排序算法及优缺点

小白的博客 1759

告别Qt Creator!VSCode + QMake + MinGW:从零搭建高效Qt开发环境

本文详细介绍了如何使用VSCode替代Qt Creator搭建高效的Qt开发环境,涵盖VSCode配置、QMake与MinGW集成、智能提示优化及构建调试技巧。通过实战案例展示如何提升开发效率30%以上,特别适合中大型Qt项目开发。

weixin_30466039的博客 243

1. 分享记录

B树、B-树、B+树、B*树之间的关系 在对n个元素进行快排的过程中,最坏情况需要进行 n-1 轮。 快速排序的基本思想是分治。 快排是不稳定的,关键在于划分过程。现有的几种划分过程,基本都是分两个指针从左右同时扫描,然后交换元素,交换过程很容易打乱元素位置。 元素比较次数,也就是其复杂性分析。理想情况下,快速排序每次划分都将原始序列划分为两个等长的子序列。所以其比较次数为T(n)=2T(n/2)+n,所以其平均期望时间为nlog(n)。但在最坏情况下,即序列有序情形下,每次划分只能分出一个元素,因..

凡物加倍磨治,皆能变化气质 1889

Flutter for web 首次加载过慢问题优化

Flutter web 加载慢优化

Bright_TY的专栏 7836

二阶锥松弛在配电网最优潮流计算中的应用(IEEE33节点配电网最优潮流算例matlab程序)(yalmip+cplex)

文献[7]建立了以支路潮流计算为基础的OPF模型,针对OPF中的非凸性约束,采用SOCR技术将其松弛为二阶锥约束,整个 OPF 模型则被转化为二阶锥规划( Second Order Cone Programming,SOCP)问题,对其求解可以得到全局最优解。其次结合辐射型配电网潮流特点建立支路潮流约束,并考虑配电网中的可控单元,包括分布式电源和离散、连续无功补偿装置,建立其出力约束,该模型为非凸非线性模型;式中,αj,t和βij,t分别为t时段内节点i电压的二次方和支路ij电流的二次方。

weixin_47365903的博客 1万+

各种排序方法的优缺点

一、冒泡排序   已知一组无序数据a[1]、a[2]、……a[n],需将其按升序排列。首先比较a[1]与 a[2]的值,若a[1]大于a[2]则交换两者的值,否则不变。再比较a[2]与a[3]的值,若a[2]大于a[3]则交换两者的值,否则不变。再比 较a[3]与a[4],以此类推,最后比较a[n-1]与a[n]的值。这样处理一轮后,a[n]的值一定是这组数据中最大的。再对a[1]~a[n- 1

滕健的博客 1万+

C# 量子级跨平台开发:用Uno Platform实现Windows、iOS、Android的“量子纠缠”UI同步

墨瑾轩推出编程学习平台,通过XAML的“量子纠缠”技术,实现跨平台开发的高效与一致性。传统方案中,多平台代码重复率高,UI差异大,而量子级方案则通过一套代码构建全平台应用,UI原子化同步,开发效率提升5倍。Uno Platform的“量子纠缠”架构解决了代码碎片化、性能瓶颈和调试难题,实现UI原子化同步、性能提升300%和跨平台数据无缝同步。核心架构包括XAML的跨平台渲染、MVVM的量子叠加态架构、平台差异的量子退相干处理以及性能优化的量子隧穿效应,为开发者提供高效、一致的跨平台开发体验。

java专栏 1165

各种排序算法的优缺点

1.插入排序 基本思想:     将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表。即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止。 优点:稳定,快 缺点:比较次数不一定,比较次数越少,插入点后的数据移动越多,特别是当数据总量庞大的时候 2.希尔排序

west_ahu的博客 2万+

老 MacBook 部署 OpenClaw:比 Windows 更稳定

老款 MacBook 在运行 OpenClaw 时,Linux 系统相比 Windows 系统具有更好的稳定性和性能。本文将从多个维度对比 Linux 和 Windows 在老款 MacBook 上运行 OpenClaw 的表现,帮助您选择更合适的操作系统。

一键难忘的博客 2096

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

JavaScript 浅谈选择法排序和冒泡排序的区别与优缺点

关于选择法排序和冒泡排序选择法我的理解我的代码代码对比冒泡法我的理解我的代码代码对比 选择法 我的理解 我的代码 代码对比 冒泡法 我的理解 我的代码 代码对比

weixin_49087505的博客 777

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

十大排序算法优缺点

下面是一个简要的表格,概述了十大排序算法的优缺点、应用场景、时间复杂度和空间复杂度:注意:

qq_40844444的博客 576

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

十大排序算法的实现以及各自的优缺点、适用情况

学习排序算法的体会: 也许在一些题目中我们可以轻松地用STL库中的函数或者容器实现我们排序的需求,但在实际问题中,数据往往会很大要考虑时间空间复杂度,而排序的因素也可能很多,不仅仅是STL库能够解决的,所以我们在排序时不能仅仅考虑写着方便,还应该考虑程序的效率和内存问题。我们有必要熟悉各种排序算法的实现以及他们的优缺点。 在说这些排序算法之前,我们先来看看真香的sort库函数究竟是由什么算法实现的...

derbi123123的博客 1万+

排序算法:冒泡排序和选择排序的内容,区别与优缺点。

在开始主要内容之前,先说一下为什么会去写这篇文章呢?当然是有原因的。 第一个原因:我和我的同学在学习java的排序过程中,冒泡排序和选择排序傻傻分不清楚。把这两个排序放在一起,可以帮助我们去更好的理解它们。 第二个原因:主要检验下自己自学的成果与问题。 那么好,咱们言归正传,首先说下这个冒泡排序: 冒泡排序: 冒泡排序的定义就不提了,总结起来就一句话(划重点):,从左到右,数组中相邻的...

weixin_42814000的博客 7462

常见排序算法的优缺点及实际案例分析

排序算法在计算机科学中扮演着重要角色,常用于数据整理、查找和优化。本文将介绍几种常见的排序算法,包括冒泡排序、选择排序、插入排序、快速排序和归并排序,并分析它们的优缺点以及实际应用案例。

qq_56447863的博客 793

排序算法的优缺点

1.插入排序 基本思想:    将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表。即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止。 优点:稳定,快 缺点:比较次数不一定,比较次数越少,插入点后的数据移动越多,特别是当数据总量庞大的时候 2.希尔排序 基本思想:    先将整个待排序的记录序列分割成为若干子序列分...

caojinpei123的博客 5893

十大排序方法思想及优缺点详细介绍

直接插入排序:Straight Insertion Sort 二分法插入排序: Binary Sort 希尔排序:Shell Sort 直接选择排序:Straight Select Sort 堆排序:Heap Sort 交换排序:Swap Sort 快速排序:Quick Sort 基数排序:Radix Sort 归并排序:Merge sort ...

udadau的博客 528

【算法】各种排序算法的总结与优缺点

排序是最基本的算法,里面包含了最基础的思想。一个简单的优化可以让排序快很多。 O(n2)O(n^2)O(n2)的排序算法 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8SjaDLyS-1587546526293)(https://i.loli.net/2020/03/10/VLfqhUWP8dEboyA.png)] 冒泡排序 //冒泡排序 template &l...

Redisread的博客 839

简单的三种排序算法原理及其优缺点

选择排序法: 概念: 选择排序是不稳定的排序方法。 首先在数组中找到最小(大)元素,存放到序列的起始位置,再从剩余的元素中找最小(大)的元素,然后将他接着存到上个已经经过排列的元素后面,循环至所有的元素都排列完毕。 优点:移动数据的次数已知(n-1次); 缺点:比较次数多。 public static void xuanze(int arr[]){ int temp = 0; fo...

Read_the_snow的博客 3233
上一篇: java关于Runtime的使用
下一篇: java线程的基本应用
Sweeter
博客等级 码龄14年 81粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值