码迷,mamicode.com
首页 > 编程语言 > 详细

数据结构排序

时间:2019-09-03 14:57:27      阅读:106      评论:0      收藏:0      [点我收藏+]

标签:快速排序   个数   稳定性   冒泡   小顶堆   算法   表示   取出   直接插入   

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

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

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

希尔排序
先取一个正整数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
稳定性稳定

数据结构排序

标签:快速排序   个数   稳定性   冒泡   小顶堆   算法   表示   取出   直接插入   

原文地址:https://www.cnblogs.com/xuzhiwen/p/11452894.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!