您的位置:首页 > 理论基础 > 数据结构算法

(二)算法与数据结构|排序算法|常见排序思想总结

2019-03-15 17:30 337 查看

1 冒泡排序、插入排序、选择排序

适合小数据规模排序。

1.1 冒泡排序思想:

如排序数组,从数组索引0开始,数组相邻元素比较,若前者大于后者则交换位置;继续将此元素重复前面比较、交换操作。最后得升序数组。

1.2 插入排序思想:

把要排序的序列分为:已排序区、未排序区,已排序区只有数组索引为0的元素,已排序区有剩余元素。然后取未排序元素在已排序区查找合适的插入位置保证已排序区一直有序。重复此过程直到未排序区元素为空,则结束。

1.3 选择排序思想:

把要排序的序列分为:已排序区、未排序区,已排序区此时没有元素,未排序区有全部元素。然后取未排序区最小元素,插入已排序区末尾。重复此过程直到未排序区元素为空,则结束。

2 归并排序、快速排序

适合大数据规模排序。都用了分治思想。

2.1 归并排序思想:

如排序数组,把数组从中间分为前后两部分,前后两部分分别排序,再把排序好后的两部分合并。

2.2 快速排序思想:

如排序数组索引从p到r之 4000 间的数据,选择p和r间任意一个数据为pivot(分区点)。把小于pivot数据放在pivot左边,大于pivot数据放在pivot右边。把pivot左右两边数据重复此过程。

3 桶排序、计数排序、基数排序

这三种排序都是线性排序,即时间复杂度都是O(n),原因是:都不是基于比较的排序,但是对数据要求很苛刻。

3.1 桶排序思想:

要求对排序数据的数据范围不大。
把要排序数据分到n个有序的桶里;每个桶里数据单独排序;桶里数据排好序后,把桶内数据一次取出。
桶排序适用于外部排序中。外部排序即:数据存储再外部磁盘中,数据量较大,内存有限,无法将数据一次性全部加载到内存中。

3.2 计数排序思想:

桶排序的一种特殊情况。
要排序序列最大值为k,则把数据分到k个桶中,每个桶放数值相同的元素。节省桶内排序时间。
只能给“非负整数”序列排序。

3.3 基数排序思想:

把要排序序列的每个数据转化为位数相等的数据,用0填充再位数的数据的后面。从高位开始比较每个数据,依次比较每个位上的数大小。
要求每个位上的数的范围不能太大。

END

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: