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

mac2026-08-06  11

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; }//每组对应位置比较大小,交换顺序 } } } }
最新回复(0)