(1)选择排序:第一轮选择第1小的放在下标是0的位置,第i轮选择第i小的放在第i-1位置;
(2)冒泡排序:假设数组长度是n,第一轮从第一个数两两比较到最后一个数,如果前一个数比后一个数大就交换,第i轮,从第一个数两两比较到倒数第i个数
(3)插入排序:第i轮保证前i轮有序,第i轮中,从第i个位置一直往前两两比较,如果前面的数大,就两两交换
(4)归并排序:先保证前半段有序,再保证后半段有序,再保证整体有序,对于前半段,再分成前半段和后半段,递归保证前半段和后半段有序;
(5)快速排序:找到一个哨兵,将数组中比哨兵小的数放到哨兵左边,将数组中比哨兵大的数放到哨兵右边,再将哨兵左边部分的数组和右边部分的数组采用相同的方法继续下去。
(6)堆排序:将一个数组看做完全二叉树。先将一个树转化为大根堆树,再将数组第一个数与堆最后一个数交换,并将堆的大小减一。交换以后,一直循环将这个树转化为大根堆,交换第一个数和最后一个数,堆大小减去一直到堆大小减到0;
(7)基数排序:比如数组有一些十进制的数(比如最高位只有百位)
第一步,将位数不够的数字高位补齐
第二步,准备十个桶(因为是十进制)编号1-10
第三步,遍历数组,看个位如果个位是几,就把他放到几号桶,然后按顺序再拿出来
第四步,重复第三步,只不过是看十位和百位。
常见排序算法思路(参考左程云算法视频)
最新推荐文章于 2024-02-20 20:32:48 发布