#排序方法

直接插入排序:
开始时有序表中只包含一个元素,无序表中包含有N-1个元素
排序过程中每次从无序表中取出第一个元素,将它插入到有序列表中的适当位置,使之成为新的有序表。
每一趟都是将一个记录插入到前面的有序段中。直到所有记录都插入到有序段中,需进行n-1趟。当然在起始的时候认为有序表中只包含一个元素,一类是有序表
在这里插入图片描述

假设数列有七个,我们需要从小到大排,首先我们了解下这个排序的过程,直接插入排序它会将起始记录作为监视哨;
快速排序:
快速排序是一种交换排序,基本思想是:从待排序列的n个记录中任何取一个记录R作为基准记录,以基准记录为界限,将待排序序列划分成两个子序列,所以关键字小于k的记录移到R的前面,所有关键字大于k的记录移到R的后面,这个过程叫做一趟快速排序;然后用同样的方法对两个序列排序,得到4个子序列;依次类推,直到每个子序列只有一个记录为止,此时就得到n个记录的有序序列。、
在这里插入图片描述

上图是我们准备排序的数列,我们希望是从小到大排,一般情况我们将第一个数据当作基准记录,需要i和j两个指示器,其中i指向左边,它应该比基准记录要小,j所指向的数据应该要比基准记录要大,如果没有满足我们的需求,我们要进行一定的处理。根据我们分析,首先我们把控制权给j,先把基准记录备份起来,j所指向的值是16,16比29要小,其实它不应该在右边,所以j所指向的值居然比29要小,那么他就必须把控制权交给i,也就是说把16这个应该放在左边的值放在所指向的位置。

选择排序:
每一趟从待排序记录中选出关键字最小的记录,按顺序放到已排序好的子序列中,直到全部记录排序完毕。选择排序有两种:直接排序和堆排序

在这里插入图片描述

在直接选择排序过程中,所需移动记录的次数比较少。在最好情况下,即待排序列正序时,该算法记录移动次数为0,反之,当待排序序列逆序时,该算法记录移动次数为(n-1).
在直接选择排序过程中需要的关键数字的比较次数与序列原始顺序无关,当i=1时(外循环执行第一次),内循环比较n-1次,i=2时,内循环比较n-2次,依次类推,算法的总比较次数为(1+2+3…+n-1)=n(n-1)/2.因此,直接选择排序的时间复杂度为0,由于只用一个变量作为辅助空间,故空间复杂度为0(1),直接选择排序是不稳定的。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值