Go语言排序算法| 青训营笔记 |
您所在的位置:网站首页 › c语言快速排序算法代码 › Go语言排序算法| 青训营笔记 |
插入排序
基本思想是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增 1 的有序表。在其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待插入位置查找,并进行移动 。 时间复杂度: 最差和平均:O(n^2) 最好:O(n) 快速排序分治思想 基本思想:任取待排序元素序列中的某元素作为基准值,按照该排序码将待排序集合分割成两子序列,左子序列中所有元素均小于基准值,右子序列中所有元素均大于基准值,然后最左右子序列重复该过程,直到所有元素都排列在相应位置上为止 时间复杂度: 最坏:O(n^2) 最好:O(nlogn) 堆排序基本思想: 将待排序的序列构造成一个大堆,根据大堆的性质,当前堆的根节点(堆顶)就是序列中最大的元素; 将堆顶元素和最后一个元素交换,然后将剩下的节点重新构造成一个大堆; 重复步骤2,如此反复,从第一次构建大堆开始,每一次构建,我们都能获得一个序列的最大值,然后把它放到大堆的尾部。最后,就得到一个有序的序列了。时间复杂度:O(nlogn) Benchmark插入排序在短序列中速度最快 快速排序在其他情况下速度最快 堆排序速度于最快算法差距不大 插入排序在序列已有序的情况下速度最快 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |