Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 当数组';s编号是随机生成的_C_Sorting_Memory - Fatal编程技术网

C 当数组';s编号是随机生成的

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 =

所以我尝试将(在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 = (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()
会这样做。好的,我现在看到了,伙计们。现在一切都很好。谢谢;)