数据结构排序

Posted xuzhiwen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构排序相关的知识,希望对你有一定的参考价值。

一:排序
为什么排序
便于查找
什么是排序
时间效率-快 排序的速度快

空间效率-占用空间小
还有就是稳定性强
指排序的位置变化,比如相同数字在同一个数列中 如果后面的排到先前的前面表示不稳定

二:排序方法
插入排序
把第一个数看成一个有序的序列,如何把后面的数插入,小的前面,大的后面

希尔排序
先取一个正整数d1小于数列中数的个数n,把所有相隔d1的记录为一组,组内进行直接插入排序;然后取d2<d1;
直至d1=1

一般去d1=n/2 di+=d1/2,如果结果为偶数,则加1
希尔排序是一种不稳定的排序方法 ,初始序列的不同会影响算法的效率


直接选择排序
把数列的最小的数选择出来与第一个数交换,然后在选最小的数与第二个数交换,依次类推


堆排序

堆:数列r1,r2,r3......rn满足ri<=r2i,ri<=r(2i+1)称为小顶堆,或者ri>=r2i,ri>=r(2i+1)称为大顶堆

堆排序就是利用堆的特性对记录序列进行排序的一种排序方法

把小顶堆或者大顶堆的r1取出来,再把剩余的数排成堆,就能得到一个有序的数列

冒泡排序
每趟记录两两比较,“前小后大”,或者“前大后小”。

稳定,空间效率 1 ,时间效率n2


快速排序
从待排序列中一个元素作为中心,所有比它小的排在前面,所有比它大的一律排在后面,然后形成两个子表,对这两个子表继续上述操作,知道每个子表只剩一个元素,就有有序序列了。

不稳定的一种排序方法


归并排序

可以把一个长度为n的无序序列看成n个长度为1的有序序列,然后两两归并,得到n/2个长度为2的有序序列,知道得到一个长度为n的有序序列。
时间效率o
空间o
稳定性稳定

以上是关于数据结构排序的主要内容,如果未能解决你的问题,请参考以下文章

数据结构(15)---排序(冒泡排序, 快速排序, 归并排序, 计数排序)

数据结构与算法——排序算法

《数据结构与算法之美》10——排序桶排序计数排序基数排序

[数据结构]排序——八大排序

数据结构的排序方法都有哪些?

数据结构——第八章 排序