排序算法简介
直接插入排序:
将第一个元素视为已排序的序列,其余元素视为未排序序列。
逐个处理:从第二个元素开始,逐个将当前元素插入到已排序序列的适当位置,直到所有元素都被插入。
插入过程:对于每个待插入的元素,通过与已排序序列中的元素进行比较,找到合适的插入位置,并将该位置及之后的元素向后移动,为新元素腾出空间。
直接选择排序:
在所有记录中选出最小的记录,把它与第1个记录交换,然后在剩余的记录内选出最小的记录与第2个交换......依次类推
冒泡排序:
第一个元素和第二个元素比较,第二元素和第三元素比较,第三和第四......,以此类推,一轮结束大的冒泡了。第二轮开始,还是从第一元素和第二元素开始比较。
希尔排序:
将待排序的数组分成若干个子序列,每个子序列使用插入排序进行排序,然后逐步减小增量,直到增量为1时完成整个数组的排序
快速排序:
采用分治策略,通过选取一个“基准”元素,将待排序的数组分为两个子数组,一个子数组的元素都比基准元素小,另一个子数组的元素都比基准元素大,然后对这两个子数组递归地进行快速排序,从而达到对整个数组排序的目的
堆排序:利用大小堆的数据结构
归并排序:
基于分治策略,从中间划分成左右数组,左右数组再划分直到1个元素,然后划分的元素排序好,再原路返回的合并