希尔(shell)排序的一种写法

shell排序就是先分组,分组后每组对应位置的数据一起比较大小,交换其位置,第一次分组排序结束后,将分组二分缩小,重复上述操作,最后直至分组分到以每个元素为单位,结束排序。

 void ShellSort(int arr[], int length){//该数组下标从0开始
      int group, i, j, temp;//j是其他组*对应i所在组的相对位置*的位置
      for (group = len / 2; group > 0; group /= 2){//每次排完后不断将分组二分,直至为1
          for (i = group;i < length; i++){//从第二组的第一个位置走到数组最后,在每个位置上判断比当前组号小的组,比较它们组内对应位置的大小相比
               for (j = i - group; j >= 0; j-=group){//找出所有比当前i所在组号小的组内的一个位置,它们在组内的位置与i在当前组的相对位置对应,进行比较
                   if (arr[j] > arr[j + group]){
                      temp = arr[j[;
                      arr[j] = arr[j + group];
                      arr[j + group] = temp;
                   }//每组对应位置比较大小,交换顺序
               }
          }
      }
 }

发布了19 篇原创文章 · 获赞 4 · 访问量 508

猜你喜欢

转载自blog.csdn.net/qq_35050438/article/details/102872558