常用算法

2020-01-28  本文已影响0人  修塔寻千里

插入排序

包括直接插入排序和希尔插入排序

直接插入排序

将一个记录插入到已经排序好的有序表中。

希尔排序

先将整个待排序列分割成若干个子序列分别进行直接插入排序,待整个序列中的记录基本有序时,再对整体进行一次直接插入排序。时间复杂度O(n*n)。

交换排序

包括冒泡排序和快速排序

冒泡排序

这个算法的核心思想是扫描数据清单,寻找出现乱序的两个相邻项目,当找到这两个项目后,交换项目的位置后继续扫描,重复上面的操作直到所有项目都按顺序排好。该算法是专门针对已部分排序的数据进行排序的算法。

快速排序

通过一趟排序,将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分的关键小,则可分别对两部分进行继续的排序。

选择排序

分为直接选择排序和堆排序

直接选择排序

第i次选取i到length-1中间最小的值放在i位置。

堆排序

首先,数组里面用层次遍历的顺序放一颗完全二叉树。从最后一个非终端结点往前调整,直到到达根节点。

归并排序

将两个或两个以上的有序表组合成一个新的有序表。归并排序需要使用一个辅助数组,大小跟原数组相同,递归做法。每次都将目标序列分解成两个序列,分别排序两个子序列之后,再将两个排序好的子序列merge到一起。

基数排序

使用10个辅助队列,假设最大数的数字位数为x,则一共做x次,从各位数开始往前,第i为数字的大小为依据,将数据放进辅助队列,搞定之后回收。下次再以高一位开始的数字位为依据。

总结

所需辅助空间最多:归并排序
所需辅助空间最少:堆排序
平均速度最快:快速排序
不稳定:快速排序,希尔排序、堆排序
选择排序算法依据:

上一篇 下一篇

猜你喜欢

热点阅读