排序算法简介

排序

  • 排序:即将原本无序的序列重新排列成有序序列的过程。
  • 排序的稳定性:所谓排序的稳定性就是当待排序序列当中有两个或者两个以上相同的关键字时,排序前后这些关键字的相对位置如果没有发生变化就是稳定的。

插入类排序

  • 直接插入排序
    • 原始序列 :49  ,38 , 65 , 50
    • 一开始只看49,一个数是有序的。
      • 排序结果:已排序( 49 )         待排序( 38,65,50)
    • 插入38。38<49,所以49向后移动一个位置,38插入到49原来位置。
      • 排序结果:已排序( 38,49 )         待排序( 65,50)
    • 插入65。65>49,所以不需要移动,65就应该在49之后。
      • 排序结果:已排序( 38,49 ,65)         待排序( 50)
    • 插入50。50<65,所以65向后移动一个位置,继续比较50>49,所以50应该排在49和65之间。
      • 排序结果:已排序( 38,49 ,50,65)
  • 折半插入排序
    • 折半插入排序的基本思想和直接插入排序类似,区别是查找位置的方法不同,折半插入排序是采用折半查找法来查找插入位置。折半查找法的一个基本条件是序列已经有序。
    • 举一个例子,现在的序列是13,38,49,65,76,97         待插入数字27,80
    • 13的下标是0,97的下标是5,将(0+5)/2向下取整得到下标是2,对应的数字是49,27<49,所以继续查找,(0+1)/2向下取整为0,0的下标是13,因为27>13,所以继续查找(1+1)/2=1,下标为1的数字为38,27<38所以继续查找,由于低位下标1大于高位下标0,所以27应该插入到13之后。
    • 同理可以找到80应当插入的位置。
  • 希尔排序
    • 49,38,65,97,76,13,27,49,55,04
    • 以增量5分割序列,得到以下几个子序列
    • 子序列1:49                   13
    • 子序列2:     38                   27
    • 子序列3:          65                   49
    • 子序列4:              97                    55
    • 子序列5:                  76                     04
    • 分别对这5个子序列进行直接插入排序,得到
    • 子序列1:13                   49
    • 子序列2:     27                  38
    • 子序列3:          49                   65
    • 子序列4:              55                    97
    • 子序列5:                  04                     76
    • 一趟希尔排序结束,结果为:
    • 13,27,49,55,04,49,38,65,97,76
    • 再以分量3做如上的分割,最后以分量1做分割,即对全体关键字进行一趟直接插入排序,从而完成整个希尔排序。

交换类排序

  • 冒泡排序
    • 待更新
  • 快速排序
    • 待更新

选择类排序

  • 简单选择排序
    • 待更新
  • 堆排序
    • 待更新

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值