一、排序算法的分类(列举7种):
1.冒泡排序
2.选择排序
3.插入排序
4.快速排序
5.归并排序 (归并排序需要额外的内存空间来保存数据,其他的方式都是在原来数据上做交换)
6.希尔排序
7.堆排序
1、最基础的排序——冒泡排序 (时间复杂度是 O(N^2))
设无序数组a[]长度为N,以由小到大排序为例。冒泡的原理:
1.比较相邻的前两个数据,如果前面的数据a[0]大于后面的数据a[1] (为了稳定性,等于不交换),就将前面两个数据进行交换。在将计数器 i ++;
2.当遍历完N个数据一遍后,最大的数据就会沉底在数组最后a[N-1]。
3.然后N=N-1;再次进行遍历排序将第二大的数据沉到倒数第二位置上a[N-2]。再次重复,直到N=0;将所有数据排列完毕。
无序数组: 2 5 4 7 1 6 8 3
遍历1次后: 2 4 5 1 6 7 3 8
遍历2次后: 2 4 1 5 6 3 7 8
遍历3次后: 2 4 1 5 3 6 7 8
...