gpt4 book ai didi

c - 在 C 语言中遇到 Shell 排序问题,无限循环

转载 作者:太空宇宙 更新时间:2023-11-04 01:09:49 24 4
gpt4 key购买 nike

我的程序的一小部分有问题,它生成一个随机数列表,然后 shell 对它们进行排序,现在它不会完成计算,这让我认为循环没有完成。我收到了段错误错误,但我设法通过解决我访问阵列的方式的一些问题来解决这个问题。无论如何,一双全新的眼睛可能对我有好处。

谢谢!

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{

printf("How long would you like to make the list? \n");

int list_length;
scanf("%d", &list_length);

int *number_list[list_length];
int random_number;
int i;
for(i=0; i<list_length; i++){
srand ( time(NULL) );
random_number = rand();
number_list[i] = random_number;
}

printf("Before: ");
printf("%d", &number_list[0]);
printf("\n");
shellSort(*number_list, list_length);

printf("After: ");
printf("%d", &number_list[0]);
printf("\n");

return 0;
}

void shellSort(int *A, int n){
int gap , i , j , temp;

for (gap = n/2; gap>0; gap /=2)
for (i=gap; i<n; i++)
for(i = i-gap; j>=0 && &A[j] > &A[j+gap]; j-=gap){
temp = &A[j];
A[j] = &A[j + gap];
A[j + gap] = temp;
}
}

最佳答案

也许你应该在这一行中使用 j 而不是 i:

 for(j = i-gap; j>=0 && &A[j] > &A[j+gap]; j-=gap) // <- first i is replaced by j
// ^
// Here

关于c - 在 C 语言中遇到 Shell 排序问题,无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15202974/

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