数据结构笔记——内部排序

内部排序



一、插入排序

例如一个乱序的数组:49 65 97 38 13 (a[4])
第一趟:(49 65) 97 38 13
第二趟:(49 65 97) 38 13
第三趟:(38 49 65 97)13
第四趟:(13 38 49 65 97)

优化代码->采用了折半排序

void BInsertSort(SqList &L)
{
for(i = 2;i<=n;i++)
{  a[0] = a[i];
  low =1;    
  high = i-1;
  while(low<=high){
  mid = (high+low)/2;
  if (a[mid]<a[0])      low = mid+1;
  else  hight = mid-1;
  }
  for (j=i-1;j>high+1;--j)
         a[high+1] = a[0];
}//for
}

二、希尔排序

例如一个乱序的数组:49 65 97 38 13 (a[4])

一开始使用间隔进行块排序,在这里有5个数,所以一开始的间隔为dk=5/2=2
排序过程如下:
①dk=2
(49 97 13)   (65 38)为一组
第一趟:13 38 49 65 97
提示:da是逐渐减半的

void shellInsert(int a[],int dk)
{
    for( i = dk+1;i<m;i++)
      if(a[i]<a[i-dk])
      {
         a[0]=a[i];
         for (	j=i-dk;j>0&&a[j]>a[0];j-=dk)
             a[j+dk] =a[j];    //将大一点的数值后移,前一个数字和自己一样大小
             a[j+dk] = a[0];    //将储存的较小数值赋插入
       }
}

void ShellSort(int a[],int ak,int n){
      for(k =n/2;k<n;k=k/2)   //选择间隔大小;
          shellInsert(a,ak);
}

三、快速排序

四、选择排序

1.堆排序

五、归并排序

六、基数排序


总结

提示:这里对文章进行总结:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值