gpt4 book ai didi

c - C 中出现段错误

转载 作者:行者123 更新时间:2023-11-30 14:20:42 24 4
gpt4 key购买 nike

我的程序的一小部分遇到了问题,该部分生成随机数列表,然后对它们进行 shell 排序,现在它无法完成计算,这让我认为循环尚未完成。我遇到了段错误错误,但我设法通过修复访问数组的方式的一些问题来解决这个问题。无论如何,一双新的眼睛可能对我有好处。抱歉,如果标签页已关闭。

我认为问题出在 shell_results 数组

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

int main()
{

/*Initialize Random Array*/
int *unsorted_list[1000000];
int random_number;
int i;

for(i=0; i<1000000; i++){

srand ( time(NULL) );
random_number = rand();
unsorted_list[i] = random_number;
}

//Do C Shell Sort
double shell_results[10][2];

double clock_diff;
int j=1000000;
clock_t t0, t1;
int k;

for(i=0;i<10;i++){
/* Sort the list using shellSort and take the time difference */
t0 = clock();
shellSort(*unsorted_list, j);
t1= clock();

/*Take difference in time*/
clock_diff = (t1 - t0);

/*Add time and list length to the results array*/
shell_results[i][0] = (double)j;
shell_results[i][1] = clock_diff;


/*Check to make sure the array has been sorted*/
checkSort(*unsorted_list, j);

/*Re-initialize a longer array*/
//j+=1000000;
for(k=0; k<j; k++){

srand ( time(NULL) );
random_number = rand();
unsorted_list[k] = random_number;
}
}

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(j = i-gap; j>=0 && &A[j] > &A[j+gap]; j-=gap){
temp = &A[j];
A[j] = &A[j + gap];
A[j + gap] = temp;
}
}

void checkSort(int *A, int n)
{
int i;
for(i=0;i<n;i++){
if(&A[i]>&A[i+1]){
printf("Error in sorting \n");
break;
}
}
}

最佳答案

首先,该行

int *unsorted_list[1000000];

正在使用指针

当然

int unsorted_list[1000000];

最好考虑一下何时填充

unsorted_list[i] = random_number; 

PS:只需使用srand一次。

关于c - C 中出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15261542/

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