Skip to content

Commit 75c044e

Browse files
committed
create quicksort.c
1 parent a46750c commit 75c044e

File tree

1 file changed

+72
-0
lines changed

1 file changed

+72
-0
lines changed

Diff for: labPrograms/quicksort.c

+72
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
// Lab Program 1
2+
// Quicksort (divide & conquer)
3+
// Avg/Best Time Complexity: O(n*log(n))
4+
// Worst Time Complexity: O(n^2)
5+
6+
#include <stdio.h>
7+
#include <stdlib.h>
8+
#include <time.h>
9+
10+
void swap(int *a, int *b)
11+
{
12+
int temp = *a;
13+
*a = *b;
14+
*b = temp;
15+
}
16+
17+
void display(int arr[], int n)
18+
{
19+
int i;
20+
for(i = 0; i < n; i++)
21+
printf("%d\t", arr[i]);
22+
}
23+
24+
int partition(int arr[], int low, int high)
25+
{
26+
int i = low - 1, j = high, pivot = arr[low];
27+
while(i < j)
28+
{
29+
while(i < high && arr[i] <= pivot)
30+
i++;
31+
while(j > low && arr[j] >= pivot)
32+
j--;
33+
if(i < j)
34+
swap(&arr[i], &arr[j]);
35+
}
36+
swap(&arr[low], &arr[j]);
37+
return j;
38+
}
39+
40+
void quicksort(int arr[], int low, int high)
41+
{
42+
if (low < high)
43+
{
44+
int pivotindex = partition(arr, low, high);
45+
quicksort(arr, low, pivotindex - 1);
46+
quicksort(arr, pivotindex + 1, high);
47+
}
48+
}
49+
50+
void main(){
51+
int i, n, arr[500];
52+
clock_t start = 0, end = 0;
53+
54+
srand(time(NULL));
55+
56+
printf("enter no. of elements:\n");
57+
scanf("%d", &n);
58+
for(i = 0; i < n; i++)
59+
arr[i] = rand() % 500 + 1;
60+
61+
printf("random generated array elements:\n");
62+
display(arr, n);
63+
64+
start = clock();
65+
quicksort(arr, 0, n-1);
66+
end = clock();
67+
68+
printf("\nthe sorted elements are:\n");
69+
display(arr, n);
70+
71+
printf("\ntime taken : %f",(end-start)/(double)CLOCKS_PER_SEC);
72+
}

0 commit comments

Comments
 (0)