数据结构中的排序

排序就是将一个元素的任意序列重排成一个按关键字有序的序列。

如果使用某一排序算法排序后,Ri和Rj的相对位置并未发生变化,则称这个排序算法是稳定的。否则就称这个算法是不稳定的。

内部排序:在排序期间,元素全部存放在内存中的排序;

外部排序:在排序期间元素无法全部同时存放在内存中,必须在排序的过程中根据要求不断的在内外存之间移动的排序。

插入排序:每一次将一个待排序的记录,按其关键字的大小插入到前面已经排好序的子序列中的合适位置上,知道全部记录插入完成。

直接插入排序:从后往前一直插入到已经排好序的位置。

时间复杂度:o(n2).                  空间复杂度:o(1)        稳定的     既适用于顺序存储的线性表,也适用于链式存储的线性表。

折半插入排序:确定当前记录在前面有序子数组中的位置时,直接插入排序是采用顺序查找法,而折半插入则采用折半查找法,所以他适用于顺序查找的线性表

时间复杂度:o(n2)      稳定的排序方法

仅适用于顺序存储的线性表。

希尔排序:基本思想:首先取一个小于n的步长di,把表中全部记录分成d1的组,所有距离为d1的记录放在同一组中,在各组中进行直接插入排序,然后取第二个步长d2<d1,重复上述过程,直到所取到的dt=1,即所有记录都放在同一组中了,由于此时整个表中记录已经基本有序,所以,最后进行一次直接插入排序,可以很快得到最终结果。

空间复杂度: o(1)    时间复杂度: o(n1.3)      不稳定的排序算法

冒泡排序:基本思想:设待排序的表长为n,从后往前两两比较元素,若逆序则交换他们,则一次排序之后得到了最小的元素在最上层,下一次冒泡排序的时候,最小的那个元素就不进行比较了。剩下的进行下一次的冒泡。

空间复杂度: o(1)   时间复杂度: o(n2)       稳定的排序算法

快速排序:基本思想:在冒泡排序的基础上改进而来。基于分治的思想。

在表中取某一元素为基准元素,将数组划分成两个子数组,使得前一个数组的元素都小于基准元素,后面的都大于基准元素,所以基准元素是放在了其应该在的位置,然后对左右两边的数组进行递归,从而完成整个排序。

是一种不稳定的排序算法。

选择排序:

简单的选择排序:将最小的元素找出来放在最前面,在剩下的元素中继续找出最小元素放在第二个位置,以此类推,每次选出一个元素,即可以确定其在有序序列中的最终位置。

时间复杂度: o(n2),空间复杂度:o(1)     是一种不稳定的排序方法。

堆排序:利用二叉树

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值