C 当数组';s编号是随机生成的
所以我尝试将(在C中)随机生成的数字应用到一个数组中,该数组将通过快速排序进行排序。生成数字和排序没有问题,但是在代码末尾,我有一个错误告诉我内存读取有问题C 当数组';s编号是随机生成的,c,sorting,memory,C,Sorting,Memory,所以我尝试将(在C中)随机生成的数字应用到一个数组中,该数组将通过快速排序进行排序。生成数字和排序没有问题,但是在代码末尾,我有一个错误告诉我内存读取有问题 #include <stdlib.h> #include <time.h> void generate(int AR[], int n){ srand((unsigned int) time(NULL)); for(int i=0;i<n;i++){ int num =
#include <stdlib.h>
#include <time.h>
void generate(int AR[], int n){
srand((unsigned int) time(NULL));
for(int i=0;i<n;i++){
int num = (rand()%100);
AR[i]=num;
}
}// end of generate
void swap(int *a, int *b){
int temp=*a;
*a=*b;
*b=temp;
} //end of swap
int sort(int AR[], int beg, int end){
int pivot= AR[end];
int a=(beg-1);
for(int i=beg; i<=end-1; i++){
if(AR[i]<pivot){
a++;
swap(&AR[i], &AR[a]);
}//end of if
} //end of i<end-1
swap(&AR[a+1], &AR[end]);
return (a+1);
} //end of sort
void Quick_sort(int AR[], int beg, int end){
if(beg<end){
int placed_PV=sort(AR, beg, end);
Quick_sort(AR, beg, placed_PV-1);
Quick_sort(AR, placed_PV+1, end);
} //end of if beg<end
}//end of Quick sort
int main(){
int AR[]={};
int n=10;
generate(AR, n);
printf("\n");
printf("Nieposortowana tablica:");
for(int i=0; i<n;i++)
printf("%d,", AR[i]);
printf("\n");
Quick_sort(AR, 0, n-1);
printf("Posortowana tablica:");
for(int i=0;i<n;i++)
printf("%d,", AR[i]);
printf("\n");
} //end of code
#包括
#包括
void生成(int-AR[],int-n){
srand((无符号整数)时间(NULL));
对于(int i=0;i你有:
int AR[]={};
int n=10;
这是错误的,因为此数组AR
只有一个元素(由于此初始化),所以您无法访问其中的十个元素
像这样修理
int AR[10]={0};
int-AR[]={};
是一个包含0个元素的数组。如果不调用未定义的行为,就无法访问其中的任何元素,而不是int-AR[]={};int-n=10;
为什么不int-AR[10]
和sizeof(AR/AR[0])
?也许你的意思是int-n=10;int-AR[n]
但是你不能像那样初始化VLA,而且你不必这样做,因为函数generate()
会这样做。好的,我现在看到了,伙计们。现在一切都很好。谢谢;)