下图是常见排序算法

1.冒泡排序
主要思想就是相邻的数据进行比较并且交换,如果前一个数a比下一个数大的话就交换位置,直到没有需要交换位置的时候停止。时间复杂度是O(),比较稳定
2.快速排序
快排的主要思想就是,选基准值,再从后往前找比基准值小的数,放到前面,再从前往后找比基准值大的数放的后面,直到再中间相遇,然后把基准值放到中间,依次循环直到有序,时间复杂度是O(nlogn)。通常是最快的。

3.归并排序
归并排序是指,将数组二分,然后再依次进行合并排序,使用递归,合并排序的步骤是用两个指针控制两个数组,将较小的放进新建立的数组,直到将两个数组的数全部排序到新建立的数组,然后再用新建立的数组替换原来的数组的对应位置。(O(nlogn))

4.堆排序Heapsort
特别适合数据量很大的场合,因为其不基于递归,不会发生堆栈溢出,排序速度略低于快排。时间复杂度是O(nlongn)。
主要思想是利用大根堆和小根堆进行排序,堆就类似完全二叉树,每一行都是满的,除了最后一行,大根堆就是每一个节点都大于他的左右节点。
每次构造大根堆,根节点就是最大值,把根节点放到最后,将其余元素继续构造大根堆,如此循环直至所有元素都排列完毕。
构造大根堆的过程:第一次是从下到上的构造,以后都是从上都下构造,每构造一个节点,就要考虑,它的交换节点还是不是满足大根堆。
