gpt4 book ai didi

c - 希尔排序函数未对数组进行完全排序

转载 作者:行者123 更新时间:2023-11-30 16:50:50 26 4
gpt4 key购买 nike

我有一个包含 10 个整数的数组,我想对其进行排序,但最终的数组似乎没有完全排序。

// Shell sort Function

void shell_sort(int A[]){
display_array(A);

int k = ARRAY_SIZE / 2;
int x = 0; // index of value that swaps with value k spaces back
int temp = 0;

while (k > 0){

for (int i = ARRAY_SIZE-1; i >= k; i-- ){
x = i;
while( (x - k) >= 0 ){

if ( A[x] < A[x-k] ){
temp = A[x];
A[x] = A[x-k];
A[x-k] = temp;
x -= k ;
}
else{
break;
}
}
}
printf("k=%d\n",k);
display_array(A);
k /= 2;
}
}

这是输入和输出:

Input:  int A[ARRAY_SIZE] = {15,4,6,2,7,8,44,1,9,3};


Output:
Input
15 4 6 2 7 8 44 1 9 3
k = 5
8 4 1 2 3 15 44 6 9 7
k = 2
1 2 8 4 3 6 9 15 44 7
k = 1
1 2 3 8 4 6 7 9 15 44

你能指出我错在哪里吗?

最佳答案

我将k/= 2更改为k--,我得到了答案,但需要更多的循环。我不确定我应该这样做。

这是输出:

15  4   6   2   7   8   44  1   9   3   
k = 5
8 4 1 2 3 15 44 6 9 7
k = 4
3 4 1 2 8 7 44 6 9 15
k = 3
2 4 1 3 6 7 15 8 9 44
k = 2
1 3 2 4 6 7 9 8 15 44
k = 1
1 2 3 4 6 7 8 9 15 44

关于c - 希尔排序函数未对数组进行完全排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42036999/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com