1.选择排序
原理:不断选择剩余元素之中的最小元素,原理:首先找到数据最小元素,与第一个数据进行交换;再次,从剩下的数组找到最小值和数据的第二个元素进行交换,直到排序结束
时间复杂度:比较次数 N*N/2,交换次数 N次
代码:
2.插入排序
原理:将每一个元素插入到已有序数组的适当位置。当前索引左侧 都是有序的,当索引达到数据最右侧时,结束排序。
时间复杂度:平均 N*N/4次比较和交换,最坏:N*N/2次比较和交换,最好:N-1次比较和0次交换
算法:
3.希尔排序
基于插入排序的算法,交换不相邻的元素对数据进行局部排序,最后使用插入排序将局部有序数据进行排序
使得任意间隔为h的元素都是有序的,h有序数据,直至h成为1 ,h=N/3.
使用递增序列:1,4,13,40,121,364……
算法:
4.归并排序
原理:将两个有序数组合并成一个大的有序数组,需要一个辅助数组。
时间复杂度 NlogN
算法:自顶向下 归并排序
5.快速排序
思想:分治排序算法,将一个数组分成两份,将两部分进行排序。快速排序和归并排序互补。归并排序,等分两个数组;快速排序,分割数组,取决于数组内容。
时间复杂度:NlgN
算法
5.1 三向切分快速排序