数据结构与算法分析之----各种常用排序详解

 1.选择排序
  思想:在需要进行排序的序列中,每次把最小(或最大)的交换到最左边的位置
   案例:
       待排序数组: 5 2 6 8 4 1
       选择过程:    5 2 6 8 4 1 => 2 5 6 8 4 1 => 1 5 6 8 4 2 => 1 4 6 8 5 2 => 1 2 6 8 5 4 => 1 2 5 8 6 4 => 1 2 4 8 6 5... 
              
2.冒泡排序
   思想:在需要进行排序的序列中,分为未排好序的(左部分)和排好序的(右部分),每次把未排序的最后一个数推到排好序的相应位
              置,因为其过程像气泡一样往上冒,故称为冒泡排序算法。
   案例:
       待排序数组:  2 5 6 8 4
       选择过程:   2 5 6 8 4 => 5 2 6 8 4 => 5 6 2 8 4 => 5 6 8 2 4 => 5 6 8 4 | 2 => 5 6 8 | 4 2 => 6 5 8 | 4 2 => 6 8 | 5 4 2 => 8 6 5 4 2

3.插入排序(两种)
   思想:将待排序序列分成两部分,左边部分是排好序的,右边部分是未排序的,开始时排好序的就只有第一个元素,然后把右边
               未排序的元素 一个一个插入排序到左边,直到元素全部到左边就形成了排好序的结构
   3.1 直接插入
       思想:在将元素插入左边排好序的序列时,通过从左到右一个一个进行比较来查找要插入的位置。
       案例:5 2 6 8 4
       插入过程:5 | 2 6 8 4 => 5 2 | 6 8 4 => 6 5 2 | 8 4 => 8 6 5 2 | 4 => 8 6 5 4 2
   3.2 折半插入
       思想:在将元素插入左边排好序的序列时,通过二分搜索的方式查找到要插入的位置。找到位置后插入的过程和直接插入一致

4.希尔排序
   思想:将元素进行同余分组,比如元素个数有8个,若将其分为d1=4组,即每一个元素的下标进行模3运算,下标{0,4}模4余数都
              为0为一组,{1,5}余1 为一组,{2,6}余2为一组,{3,7}余3为一组,当然这只是一种逻辑上的划分,并不是物理上对其进行
              切分。然后在各组内进行直接插入排序,排序完再对其进行分组,一般取d(i+1) = d(i)/2
  • 8
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值