forked from gunanksood/C-Codes
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathRecursiveQuickSort.c
More file actions
executable file
·82 lines (82 loc) · 1.41 KB
/
RecursiveQuickSort.c
File metadata and controls
executable file
·82 lines (82 loc) · 1.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#include<stdio.h>
#include<stdlib.h>
void display( int *num , int size )
{
int i;
for( i = 0; i < size; i++ )
{
printf("{%d} ",num[i]);
}
printf("\n");
}
int reduction( int A[] , int BEG , int END )
{
int LEFT , RIGHT , TEMP , LOC;
LEFT = LOC = BEG;
RIGHT = END;
while( 1 )
{
while( A[LOC] <= A[RIGHT] && LOC != RIGHT )
{
RIGHT = RIGHT - 1 ;
}
if( LOC == RIGHT )
{
break;
}
if( A[LOC] > A[RIGHT] )
{
TEMP = A[LOC];
A[LOC] = A[RIGHT];
A[RIGHT] = TEMP;
LOC = RIGHT;
}
while( A[LEFT] <= A[LOC] && LOC != LEFT )
{
LEFT = LEFT + 1 ;
}
if( LOC == LEFT )
{
break;
}
if( A[LEFT] > A[LOC] )
{
TEMP = A[LOC];
A[LOC] = A[LEFT];
A[LEFT] = TEMP;
LOC = LEFT;
}
}
return LOC;
}
void quick_sort( int A[] , int BEG , int END )
{
int LOC;
LOC = reduction( A , BEG , END );
if( BEG < LOC - 1 )
{
quick_sort( A , BEG , LOC - 1);
}
if( LOC + 1 < END )
{
quick_sort( A , LOC + 1 , END );
}
}
int main()
{
int *num;
int size , i;
printf("\n Enter The Size of An Array : ");
scanf("%d",&size);
num = (int*)calloc(sizeof(int) , size );
for( i = 0; i < size; i++ )
{
num[i] = rand() % 100;
}
printf("\n Array Elements \n");
display( num , size );
quick_sort( num , 0 , size - 1 );
printf("\n After Quick Sort,Array Elements \n");
display( num , size );
return 0;
}