C Programming Sorting
C Programming Sorting
Sorting
IIT Patna 1
Sorting problem
• Given an array:a[0], a[1], ... , a[size-1] reorder the element such
that a[0] <= a[1] <= ... <= a[size-1]
• The list becomes in increasing (non-decreasing or ascending) order
• We can also sort the element in decreasing order
• We prefer not to use additional arrays for the element rearrangement
• Example:
• Original array: 43 24 59 57 98 34 12 61
• Increasing order: 12 24 34 43 57 59 61 98
• Decreasing order: 98 61 59 57 43 34 24 12
IIT Patna 2
Selection sort
• Steps:
• Initialize k=0
• Find the smallest element min in the array x[k,...,size-1]
• Swap the smallest element with x[k], then increase k
IIT Patna 3
Selection sort
int minloc(int x[], int k, int size){ int selsort(int x[], int size){
int j, pos; int k, tmp, m;
pos = k; for(k=0; k<size-1; k++){
for(j=k+1; j<size; j++) m = minloc(x, k, size);
if(x[j] < x[pos]) tmp = x[k];
pos = j; x[k] = x[m];
return pos; x[m] = tmp;
} }
}
IIT Patna 4
Selection sort
0 1 2 3 4 5 6 7
3 9 6 5 8 2 1 7
IIT Patna 5
Selection sort
0 1 2 3 4 5 6 7
3 9 6 5 8 2 1 7
IIT Patna 5
Selection sort
0 1 2 3 4 5 6 7
3 9 6 5 8 2 1 7
1 9 6 5 8 2 3 7
IIT Patna 5
Selection sort
0 1 2 3 4 5 6 7
3 9 6 5 8 2 1 7
1 9 6 5 8 2 3 7
IIT Patna 5
Selection sort
0 1 2 3 4 5 6 7
3 9 6 5 8 2 1 7
1 9 6 5 8 2 3 7
1 2 6 5 8 9 3 7
IIT Patna 5
Selection sort
0 1 2 3 4 5 6 7
3 9 6 5 8 2 1 7
1 9 6 5 8 2 3 7
1 2 6 5 8 9 3 7
1 2 3 5 8 9 6 7
IIT Patna 5
Selection sort
0 1 2 3 4 5 6 7
3 9 6 5 8 2 1 7
1 9 6 5 8 2 3 7
1 2 6 5 8 9 3 7
1 2 3 5 8 9 6 7
IIT Patna 5
Selection sort
0 1 2 3 4 5 6 7
3 9 6 5 8 2 1 7
1 9 6 5 8 2 3 7
1 2 6 5 8 9 3 7
1 2 3 5 8 9 6 7
1 2 3 5 8 9 6 7
IIT Patna 5
Selection sort
0 1 2 3 4 5 6 7
3 9 6 5 8 2 1 7
1 9 6 5 8 2 3 7
1 2 6 5 8 9 3 7
1 2 3 5 8 9 6 7
1 2 3 5 8 9 6 7
IIT Patna 5
Selection sort
0 1 2 3 4 5 6 7
3 9 6 5 8 2 1 7
1 9 6 5 8 2 3 7
1 2 6 5 8 9 3 7
1 2 3 5 8 9 6 7
1 2 3 5 8 9 6 7
1 2 3 5 6 9 8 7
IIT Patna 5
Selection sort
0 1 2 3 4 5 6 7
3 9 6 5 8 2 1 7
1 9 6 5 8 2 3 7
1 2 6 5 8 9 3 7
1 2 3 5 8 9 6 7
1 2 3 5 8 9 6 7
1 2 3 5 6 9 8 7
IIT Patna 5
Selection sort
0 1 2 3 4 5 6 7
3 9 6 5 8 2 1 7 1 2 3 5 6 7 8 9
1 9 6 5 8 2 3 7
1 2 6 5 8 9 3 7
1 2 3 5 8 9 6 7
1 2 3 5 8 9 6 7
1 2 3 5 6 9 8 7
IIT Patna 5
Selection sort
0 1 2 3 4 5 6 7
3 9 6 5 8 2 1 7 1 2 3 5 6 7 8 9
1 9 6 5 8 2 3 7
1 2 6 5 8 9 3 7
1 2 3 5 8 9 6 7
1 2 3 5 8 9 6 7
1 2 3 5 6 9 8 7
IIT Patna 5
Selection sort
0 1 2 3 4 5 6 7
3 9 6 5 8 2 1 7 1 2 3 5 6 7 8 9
1 9 6 5 8 2 3 7 1 2 3 5 6 7 8 9
1 2 6 5 8 9 3 7
1 2 3 5 8 9 6 7
1 2 3 5 8 9 6 7
1 2 3 5 6 9 8 7
IIT Patna 5
Selection sort
0 1 2 3 4 5 6 7
3 9 6 5 8 2 1 7 1 2 3 5 6 7 8 9
1 9 6 5 8 2 3 7 1 2 3 5 6 7 8 9
1 2 6 5 8 9 3 7
1 2 3 5 8 9 6 7
1 2 3 5 8 9 6 7
1 2 3 5 6 9 8 7
IIT Patna 5
Bubble sort
• Basic idea
• In every pass, we go on comparing the neighboring pairs and swap them if
out of order
• At the end of each iteration the largest element will settle at the last position
• Repeat above steps excluding the last element
IIT Patna 6
Bubble sort
void bsort (int x[], int size){
int t;
for (i = 0; i < size; i++)
for (j = 0; j < size-i-1; j++)
if (x[j] > x[j+1]) {
// swap a[j] and a[j+1]
t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}
}
IIT Patna 7
Bubble sort
71 44 34 56 87 93 23 12
IIT Patna 8
Bubble sort
71 44 34 56 87 93 23 12
IIT Patna 8
Bubble sort
44
71 44
71 34 56 87 93 23 12
IIT Patna 8
Bubble sort
44
71 44
71 34 56 87 93 23 12
IIT Patna 8
Bubble sort
44
71 34
44
71 34
71 56 87 93 23 12
IIT Patna 8
Bubble sort
44
71 34
44
71 34
71 56 87 93 23 12
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 93 23 12
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 93 23 12
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 93 23 12
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 93 23 12
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 93 23 12
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 93 23 12
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 23
93 93
23 12
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 23
93 93
23 12
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 23
93 23
93
12 93
12
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 23
93 23
93
12 93
12
44 34 56 71 87 23 12 93
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 23
93 23
93
12 93
12
44 34 56 71 87 23 12 93
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 23
93 23
93
12 93
12
44
34 34
44 56 71 87 23 12 93
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 23
93 23
93
12 93
12
44
34 34
44 56 71 87 23 12 93
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 23
93 23
93
12 93
12
44
34 34
44 56 71 87 23 12 93
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 23
93 23
93
12 93
12
44
34 34
44 56 71 87 23 12 93
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 23
93 23
93
12 93
12
44
34 34
44 56 71 87 23 12 93
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 23
93 23
93
12 93
12
44
34 34
44 56 71 87 23 12 93
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 23
93 23
93
12 93
12
44
34 34
44 56 71 87 23 12 93
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 23
93 23
93
12 93
12
44
34 34
44 56 71 87 23 12 93
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 23
93 23
93
12 93
12
44
34 34
44 56 71 87
23 23
87 12 93
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 23
93 23
93
12 93
12
44
34 34
44 56 71 87
23 23
87 12 93
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 23
93 23
93
12 93
12
44
34 34
44 56 71 87
23 23
87
12 87
12 93
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 23
93 23
93
12 93
12
44
34 34
44 56 71 87
23 23
87
12 87
12 93
34 44 56 71 23 12 87 93
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 23
93 23
93
12 93
12
44
34 34
44 56 71 87
23 23
87
12 87
12 93
34 44 56 71 23 12 87 93
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 23
93 23
93
12 93
12
44
34 34
44 56 71 87
23 23
87
12 87
12 93
34 44 56 71 23 12 87 93
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 23
93 23
93
12 93
12
44
34 34
44 56 71 87
23 23
87
12 87
12 93
34 44 56 71 23 12 87 93
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 23
93 23
93
12 93
12
44
34 34
44 56 71 87
23 23
87
12 87
12 93
34 44 56 71 23 12 87 93
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 23
93 23
93
12 93
12
44
34 34
44 56 71 87
23 23
87
12 87
12 93
34 44 56 71 23 12 87 93
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 23
93 23
93
12 93
12
44
34 34
44 56 71 87
23 23
87
12 87
12 93
34 44 56 71 23 12 87 93
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 23
93 23
93
12 93
12
44
34 34
44 56 71 87
23 23
87
12 87
12 93
34 44 56 71 23 12 87 93
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 23
93 23
93
12 93
12
44
34 34
44 56 71 87
23 23
87
12 87
12 93
34 44 56 23
71 23
71 12 87 93
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 23
93 23
93
12 93
12
44
34 34
44 56 71 87
23 23
87
12 87
12 93
34 44 56 23
71 23
71 12 87 93
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 23
93 23
93
12 93
12
44
34 34
44 56 71 87
23 23
87
12 87
12 93
34 44 56 23
71 23
71
12 71
12 87 93
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 23
93 23
93
12 93
12
44
34 34
44 56 71 87
23 23
87
12 87
12 93
34 44 56 23
71 23
71
12 71
12 87 93
34 44 56 23 12 71 87 93
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 23
93 23
93
12 93
12
44
34 34
44 56 71 87
23 23
87
12 87
12 93
34 44 56 23
71 23
71
12 71
12 87 93
34 44 56 23 12 71 87 93
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 23
93 23
93
12 93
12
44
34 34
44 56 71 87
23 23
87
12 87
12 93
34 44 56 23
71 23
71
12 71
12 87 93
34 44 56 23 12 71 87 93
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 23
93 23
93
12 93
12
44
34 34
44 56 71 87
23 23
87
12 87
12 93
34 44 56 23
71 23
71
12 71
12 87 93
34 44 56 23 12 71 87 93
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 23
93 23
93
12 93
12
44
34 34
44 56 71 87
23 23
87
12 87
12 93
34 44 56 23
71 23
71
12 71
12 87 93
34 44 56 23 12 71 87 93
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 23
93 23
93
12 93
12
44
34 34
44 56 71 87
23 23
87
12 87
12 93
34 44 56 23
71 23
71
12 71
12 87 93
34 44 56 23 12 71 87 93
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 23
93 23
93
12 93
12
44
34 34
44 56 71 87
23 23
87
12 87
12 93
34 44 56 23
71 23
71
12 71
12 87 93
34 44 56
23 23
56 12 71 87 93
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 23
93 23
93
12 93
12
44
34 34
44 56 71 87
23 23
87
12 87
12 93
34 44 56 23
71 23
71
12 71
12 87 93
34 44 56
23 23
56 12 71 87 93
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 23
93 23
93
12 93
12
44
34 34
44 56 71 87
23 23
87
12 87
12 93
34 44 56 23
71 23
71
12 71
12 87 93
34 44 56
23 23
56
12 56
12 71 87 93
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 23
93 23
93
12 93
12
44
34 34
44 56 71 87
23 23
87
12 87
12 93
34 44 56 23
71 23
71
12 71
12 87 93
34 44 56
23 23
56
12 56
12 71 87 93
34 44 23 12 56 71 87 93
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 23
93 23
93
12 93
12
44
34 34
44 56 71 87
23 23
87
12 87
12 93
34 44 56 23
71 23
71
12 71
12 87 93
34 44 56
23 23
56
12 56
12 71 87 93
34 44 23 12 56 71 87 93
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 23
93 23
93
12 93
12
44
34 34
44 56 71 87
23 23
87
12 87
12 93
34 44 56 23
71 23
71
12 71
12 87 93
34 44 56
23 23
56
12 56
12 71 87 93
34 44 23 12 56 71 87 93
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 23
93 23
93
12 93
12
44
34 34
44 56 71 87
23 23
87
12 87
12 93
34 44 56 23
71 23
71
12 71
12 87 93
34 44 56
23 23
56
12 56
12 71 87 93
34 44 23 12 56 71 87 93
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 23
93 23
93
12 93
12
44
34 34
44 56 71 87
23 23
87
12 87
12 93
34 44 56 23
71 23
71
12 71
12 87 93
34 44 56
23 23
56
12 56
12 71 87 93
34 44
23 23
44 12 56 71 87 93
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 23
93 23
93
12 93
12
44
34 34
44 56 71 87
23 23
87
12 87
12 93
34 44 56 23
71 23
71
12 71
12 87 93
34 44 56
23 23
56
12 56
12 71 87 93
34 44
23 23
44 12 56 71 87 93
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 23
93 23
93
12 93
12
44
34 34
44 56 71 87
23 23
87
12 87
12 93
34 44 56 23
71 23
71
12 71
12 87 93
34 44 56
23 23
56
12 56
12 71 87 93
34 44
23 23
44
12 44
12 56 71 87 93
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 23
93 23
93
12 93
12
44
34 34
44 56 71 87
23 23
87
12 87
12 93
34 44 56 23
71 23
71
12 71
12 87 93
34 44 56
23 23
56
12 56
12 71 87 93
34 44
23 23
44
12 44
12 56 71 87 93
34 23 12 44 56 71 87 93
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 23
93 23
93
12 93
12
44
34 34
44 56 71 87
23 23
87
12 87
12 93
34 44 56 23
71 23
71
12 71
12 87 93
34 44 56
23 23
56
12 56
12 71 87 93
34 44
23 23
44
12 44
12 56 71 87 93
34 23 12 44 56 71 87 93
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 23
93 23
93
12 93
12
44
34 34
44 56 71 87
23 23
87
12 87
12 93
34 44 56 23
71 23
71
12 71
12 87 93
34 44 56
23 23
56
12 56
12 71 87 93
34 44
23 23
44
12 44
12 56 71 87 93
34
23 23
34 12 44 56 71 87 93
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 23
93 23
93
12 93
12
44
34 34
44 56 71 87
23 23
87
12 87
12 93
34 44 56 23
71 23
71
12 71
12 87 93
34 44 56
23 23
56
12 56
12 71 87 93
34 44
23 23
44
12 44
12 56 71 87 93
34
23 23
34 12 44 56 71 87 93
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 23
93 23
93
12 93
12
44
34 34
44 56 71 87
23 23
87
12 87
12 93
34 44 56 23
71 23
71
12 71
12 87 93
34 44 56
23 23
56
12 56
12 71 87 93
34 44
23 23
44
12 44
12 56 71 87 93
34
23 23
34
12 34
12 44 56 71 87 93
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 23
93 23
93
12 93
12
44
34 34
44 56 71 87
23 23
87
12 87
12 93
34 44 56 23
71 23
71
12 71
12 87 93
34 44 56
23 23
56
12 56
12 71 87 93
34 44
23 23
44
12 44
12 56 71 87 93
34
23 23
34
12 34
12 44 56 71 87 93
23 12 34 44 56 71 87 93
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 23
93 23
93
12 93
12
44
34 34
44 56 71 87
23 23
87
12 87
12 93
34 44 56 23
71 23
71
12 71
12 87 93
34 44 56
23 23
56
12 56
12 71 87 93
34 44
23 23
44
12 44
12 56 71 87 93
34
23 23
34
12 34
12 44 56 71 87 93
23 12 34 44 56 71 87 93
IIT Patna 8
Bubble sort
44
71 34
44
71 56
34
71 56
71 87 23
93 23
93
12 93
12
44
34 34
44 56 71 87
23 23
87
12 87
12 93
34 44 56 23
71 23
71
12 71
12 87 93
34 44 56
23 23
56
12 56
12 71 87 93
34 44
23 23
44
12 44
12 56 71 87 93
34
23 23
34
12 34
12 44 56 71 87 93
23
12 23
12 34 44 56 71 87 93
IIT Patna 8
Other sorting techniques
• Two other popular techniques are
• Merge-sort
• Quick-sort
• Explore yourself!!
IIT Patna 9