插入、希尔排序

  • 插入排序
void InsertSort (int* a, int n){
  int i = 0;
  for (i=0;i<n-1;i++){
    int end = i;
    while (end>=0 && end<n-1){
      if (a[end]>a[end+1]){
        a[end+1] = a[end];
        end--;
       }
      else{
        break;
       }
      a[end+1] = tmp;
    }
  }
  • 希尔排序

希尔排序法又称缩小增量法。希尔排序法的基本思想是:先选定一个整数gap,把待排序文件中所有记录分成个组,所有距离为gap的记录分在同一组内,并对每一组内的记录进行排序。然后,重复上述分组和排序的工作。当到达gap=1时,所有记录在统一组内排好序。
希尔排序可以看作是对插入排序的优化。

void ShellSort (int* a, int n){
  int gap = n;
  int i = 0;
  while (gap>0){
   gap = gap/3+1;
   for (i=0;i<=n-gap-1;i++){
   int end = i;
   int tmp = a[end+gap];
     while (end>=0){
       if (a[end]>a[end+gap]){
         a[end+gap] = a[end];
         end -= gap;
        }
       else{
         break;
        }
       a[end+gap] = tmp;
     }
   }
 }

猜你喜欢

转载自blog.csdn.net/Darling_sheeps/article/details/86302524