Я работал над QUICKSORT и сам написал всю эту программу. Код выглядит следующим образом
#include<stdio.h>
#include<stdlib.h>
void quicksort(int*,int,int);
int partition(int*,int,int);
swap(int*,int*);
int main()
{
int *arr,n,i;
printf("\nEnter the size of the array");
scanf("%d",&n);
arr=(int*)malloc(n*sizeof(int));
printf("\nEnter the elements of the array one by one");
for(i=0;i<n;i++)
{
scanf("%d",arr+i);
}
quicksort(arr,0,n-1);
printf("\nThe Sorted Array is as follows");
for(i=0;i<n;i++)
{
printf("%d",*(arr+i));
}
return 0;
}
void quicksort(int* arr,int a,int b)
{
int c;
if(a<b)
c=partition(arr,a,b);
quicksort(arr,a,c-1);
quicksort(arr,c+1,b);
}
int partition(int* arr,int a,int b)
{
int x,y,index=*(arr+b);
x=a,y=b-1;
while(x<y)
{
if(*(arr+x)<index)
{
x++;
}
if(index<*(arr+y))
{
y--;
}
swap((arr+x),(arr+y));
}
swap((arr+x),(arr+b));
return x;
}
swap(int *a,int *b)
{
int temp;
temp=*a;
*a=*b;
*b=temp;
}
Я пытался запустить эту программу, но после ввода массива появляется ошибка сегментации. Я потратил несколько минут на просмотр кода и проверял код снова и снова, но, похоже, я никуда не двигаюсь.
может кто-нибудь сказать мне, где ошибка.