Sorting: Center For Distributed Computing, Jadavpur University
Sorting: Center For Distributed Computing, Jadavpur University
• Take the next element from the unsorted array. Insert it into the proper
place in the already-sorted sub-array.
Example
0 1 2 3 4 5 6
Null G D Z F B E
Null D G Z F B E
Null D G Z F B E
Null D F G Z B E
Null B D F G Z E
Null B D E F G Z
for i = 2 to n do
{
temp = a[i];
loc = i;
while ((loc > 1) and (a[loc-1]>temp)) do
{
a[loc] = a[loc-1];
loc = loc-1;
}
a[loc] = temp;
}
Best case
Worst Case
Average Case
=O(n2)
B G E D Z F
B D E G Z F
B D E G Z F
B D E F Z G
B D E F G Z
for i = 1 to n-1 do
{
minindex = i;
for j = i+1 to n do
{
if (a[j] < a[minindex])
then minindex = j;
}
swap(a[i], a[minindex]);
}
n-1
Time complexity=∑(n-i)=1/2 n2-1/2 n= O(n2)
i=1
Divide-Conquer-Recombine
Divide the array into two halves, sort both these sub-arrays
using the same procedure recursively and combine the
sorted sub-arrays by merging.
G B N E M P V H
G B M P
N E V H
G B N E M P H
V
B G E N M P H V
B E G N H M P V
B E G H M N P
Center for Distributed Computing, Jadavpur University
V
Algorithm
mergesort:
if (first < last )
then
{
mid = (first + last)/2;
mergesort(a, first, mid);
mergesort(a, mid+1, last);
merge(a, first, mid, last);
}
If n is a power of 2,
T(2n) = 2T(n) + O(n), T(2) = 1; (recurrence relation)
Solution is T(n) = O(n log n)
D M S
E CB H V P
G
B C E P V
D G H M S
M P V
B C D E G H
S
B C D E G H M P S V
B C D E G H M P S V
Center for Distributed Computing, Jadavpur University
Algorithm
• Quicksort: if (first <last)
then{ Partition(a, first, last, loc);
Quicksort(a, first, loc-1);
Quicksort(a, loc+1, last);
}
• Partition: i = first;
loc = last+1;
pivot = a[first];
while i<loc do
{ repeat
i = i+1;
until (a[i] >= pivot);
repeat
loc = loc-1;
until (a[loc] ≤ pivot);
if (i<loc)
then swap(a[i], a[loc]);
}
swap (a[first], a[loc]);
K2 K3
K4 K5 K6 K7
The heap property : the value of each node is greater than or equal to its children.
If the input array is arranged as a heap, the first element of the array is
the largest. We exchange the first and last element. Thus, now the last
element is in proper position. We rearrange the new heap consisting of
the first through the last but one element. Heap Sort is an iteration of
this procedure.
H F G E A D C B
F G
E A D C
Heapsort:
for (i = N/2; i>=0; i--)
Percolate-down(A, i, N); // Build-heap