八大排序算法
分类方式
一.交换排序:1.冒泡排序,2.快速排序
二.插入排序:3.直接插入排序,4.希尔排序
三.选择排序:5.简单选择排序,6.堆排序
四.7.归并排序
五.8.基数排序
python实现
一、冒泡排序
思路:
两层循环:
第一层代表最右边最大数的位置。
第二层用来对比交换找出剩下的最大数
二、快速排序
1.递归排序算法
思路:
2.非递归排序算法
思路:和递归比较像,用栈来存划分区间,
在先找一个锚点,一最右边为例,通过锚点来划分子区间
参考:https://zhuanlan.zhihu.com/p/60756341
三、直接插入排序
1.思路
它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。
2.两种写法
有两种写法但是本质是一样的:
(1)标准的:不交换
- 设置一层循环,可以从0,也可以从1,都一样
- 然后设一个变量key=arr[i],key用来记录,不交换,让后加while
(2)参考冒泡排序:交换
- 设置一层循环,可以从0,也可以从1,都一样
- 在设置一层循环,注意使用倒叙range(i-1, -1, -1),然后进行交换
(1)标准的:不交换
(2)参考冒泡排序:交换
四、希尔排序
1.思路
希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法
五、简单选择排序
1.思路
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
六、堆排序
1.思路
七、归并排序
1.思路
归并排序采用分而治之的原理:
一、将一个序列从中间位置分成两个序列;
二、在将这两个子序列按照第一步继续二分下去;
三、直到所有子序列的长度都为1,也就是不可以再二分截止。这时候再两两合并成一个有序序列即可。