排序算法大体可分为两种:一种是比较排序,时间复杂度O(nlogn) ~ O(n^2),主要有:冒泡排序,选择排序,插入排序,归并排序,堆排序,快速排序等。另一种是非比较排序,时间复杂度可以达到O(n),主要有:计数排序,基数排序,桶排序等。
比较排序规则:基本操作包括比较和交换。一般最后从小到大排列。
1冒泡排序:采用>(大于)从后往前,进行相邻比较和交换,每一轮得到最小的数;从而是一种稳定排序。
2选择排序:每一轮比较得到最小的数,一次交换到位。不稳定排序。
3插入排序:它的工作原理非常类似于我们抓扑克牌,对于未排序数据(右手抓到的牌),在已排序序列(左手已经排好序的手牌)中从后向前扫描(隐含空间位置的挪动),找到相应位置并插入。稳定,用于少量元素的排序。
4二分插入排序:插入排序+二分法,随机初始序列情况下减少比较次数。不稳定
5希尔排序:递减增量 (插入)排序。不稳定
6归并排序:归并(merge)操作指的是将两个已经排序的序列合并成一个序列的操作。稳定