快捷搜索: 王者荣耀 脱发

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

内部排序



一、插入排序

例如一个乱序的数组: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 第一趟: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.堆排序

五、归并排序

六、基数排序


总结

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

经验分享 程序员 微信小程序 职场和发展