排序算法的种类

用x存储要插入的元素,从要插入元素的前一个元素开始向前比较,找到比它小的就插入。

每一次循环都要比较两次,还要保证被插入位置下标>0

使用带哨兵的顺序查找法 

哨兵位置放在数组下标为0的位置上,剩下的和直接插入一样,也是一个一个从后往前比较

 

 算法实现

 折半插入排序

在哨兵插入的基础上使用二分查找的方式插入最小下表为1

 

 

希尔排序:多间隔跳跃排序,一次移动位置较大,跳跃式的接近排序后的位置

增量序必须时递减的 最后一个必须为1

 是一种不稳定的排序

先间隔5个数字进行排序 再间隔三个数字进行排序,再间隔一个数字进行排序

 

交换排序

冒泡排序 快速排序

快速排序不稳定

选择排序

简单选择排序 堆排

基本思想:在待排序的数据中选出最大(小)的放在其最终位置上

再使用打擂台的方式找到最小的,和第一个位置/第二个位置的元素进行交换

 

堆排序

小根堆 大根堆

小根堆:所有的根都比左右孩子小

大根堆:所有的根都比左右孩子大

大根堆的堆顶就是最大值,小根堆的堆顶就是最小值

将堆顶输出后,把堆中的最后一个元素上调至堆顶,再和左右子树进行调整,直至调整至叶子节点。

建立堆:从一个无需序列建立起一个大(小)根堆

归并排序

将两个或者两个以上的有序子序列,归并成为一个有序子序列

 

 

 

 

插入:

直接插入排序:相当于抓牌游戏,使用哨兵放在第一个位置上,从后往前一个一个对比 

                       :使用二分法的直接插入

希尔排序:跳跃式排序 5,3,1

交换

冒泡排序:

快速排序:选择第一个元素为标记点,小的放在它前面,大的放在他后面,将序列分为了两个子表,再对两个子表进行上面操作。

选择

选择排序:从一个序列中用打擂台方式取出最小的一个放在第一个位置上,取出第二小放在第二个位置上

堆排:将无序的数据堆化,排成小根堆/大根堆,取出顶堆元素,进行堆调整,再取堆顶元素

归并:将两个或者多个有序序列归并为一个有序序列

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值