数据结构(中)
冒泡排序:
如果有n个数, 每次排序都使一个数据排好,最坏需要n轮 所以时间复杂度为0(n*2)
选择排序
找待排序数组中最小值并和待排序数组的第一个位置进行交换
找最小值也是进行对比
时间复杂度为 n*(n-1)/2为0(n^2)
插入排序
待排序数组的第一个数据,插入到已经排序好的数组中去
假设第一个是为排好的数据,其他数据依次插入到排好的数据中,在进行比较
希尔排序——本质分组排序
是为了解决插入排序存在的问题
插入排序存在的问题
:当我们插入排序后的数据越小,会导致插入排序进行大量的移动;缺点:不能将小数据排在后面。
希尔排序;
第一次:两两分成一组,每个数据需要间隔总数据长的一半
第二次:每四个分成一组,每个数据需要间隔总数据长的一半的一半
第三次:每六个分成一组,每个数据需要间隔总数据长的一半的一半的一半,再进行对比交换。
第四次:整体分为一组,进行小数据的对比交换。