C Programming Tutorial
Quick Sort Algorithm is an example of divide-and-conquer algorithmic technique. It is partition exchage sort.
AlgorithmBuilt-in qsort function is located in stdlib.h
void qsort(void*, size_t, size_t, int (*)(const void*, const void *));
param 1-> pointer to an array
param 2 -> size of the array
param 3 -> size of each element
param 4 -> compare function which returns a number, takes 2 input void pointers
return value is 0 if 2 inputs are equal
-1 if input 1 is less than input 2
1 if input 1 is greater than input 2
*** above logic is for Ascending Order
*** for Descending Order change return value if ip1>ip2 to 1 else -1
qsort using built-in function
#include <stdio.h>
#include <stdlib.h>
int cmp(const void * n1, const void * n2)
{
// convert to appropriate data type, here we have integer array.
int* n11 = (int*)(n1);
int* n12 = (int*)(n2);
if (*n11 == *n12) return 0;
else if(*n11 < *n12) return -1;
else return 1;
}
int main()
{
int a[]={5,1,2,3,4};
int n = sizeof(a)/sizeof(a[0]);
qsort(a,n,sizeof(int),cmp);
for (int i=0; i < n; i++) printf("%d ",a[i]);
puts("");
return 0;
}
Output:
1 2 3 4 5Quick Sort Custom Implementation
#include <stdio.h>
void display(char*msg,int*a);
void quick_sort(int* a);
int main(void)
{
int a[10]={1,10,20,12,15,13,78,88,99,-1};
display("before sorting...",a);
quick_sort(a);
display("After sorting...",a);
return 0;
}
void display(char*msg,int*a)
{
printf("%s ",msg);
for(int i=0; i < 10; i++)
{
printf("%d ",a[i]);
}
printf("\n");
}
void quick_sort(int* a){
}
output:
before sorting... 1 10 20 12 15 13 78 88 99 -1 After sorting... -1 1 10 12 13 15 20 78 88 99
ADS