排序算法学习笔记

一,简单排序

冒泡排序:依次比较相邻两个元素,如果左边比右边大则交换两个元素,这样就能找到最大的数;

                固定最大的数,对其他数重复以上过程。

选择排序:对所有数遍历找到最大的数(使用变量记录),将其与最右边的数交换;

                固定最大的数,对其他数重复以上过程。

插入排序:将无序的数插入至有序的数组中,第一个数为有序,右边的数依次进行插入;

                需要插入的数从有序数组右往左比较,进行冒泡找到合适的位置。

二、高级排序

希尔排序:插入排序升级版,减小增量排序。初始状态在宏观上是有序的,只需要微调。

将数组分为h(提前设置好增量因子)组进行插入排序;

缩小h,重复以上过程。

排序时只需要 i 从h到 length 遍历,比较 array[i] 和 array[i-h] 的值

归并排序:分治思想,分组递归排序,再进行有序归并。

归并时使用辅助数组进行储存,结束后复制回原数组。

 

 快速排序:分治思想,以参照值将数组分为两部分,左侧小于参照值,右侧大于;

                再将这两部分取参照值继续分组,直到最后小组排好序整个数组也就排好了序。

分组方法:通过两个指针向中移,左指针遇到大于参照值停,右指针遇到小于参照值停,交换;

                继续移动直到两指针重合,将参照值与指针位置交换,完成分组。

 

 算法复杂度与稳定性分析:

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值