You are on page 1of 5

Ans to the Question No 1

#include <stdio.h>
void insertion_sort(int *arr, int n)
{
int i = 0, j = 0, tmp = 0;
for (i = 1; i < n; i++)
{
tmp = arr[i];
j = i - 1;
while(j >= 0 && tmp < arr[j])
{
arr[j+1] = arr[j];
j--;
}
arr[j+1] = tmp;
}
}
void main()
{
int arr[] = {64, 55, 33, 16, 7, 72, 87, 2, 24};
int i = 0;
printf("Array before sorting: ");
for (i = 0; i < (sizeof(arr)/sizeof(int)); i++) printf(" %d", arr[i]);
printf("\n");
insertion_sort(arr, sizeof(arr)/sizeof(int));
printf("Array after sorting: ");
for (i = 0; i < (sizeof(arr)/sizeof(int)); i++) printf(" %d", arr[i]);
printf("\n");
}

Output:

Ans to the Question No 2

#include <stdio.h>

int partition(int *arr, int start, int end){

int pivot, tmp, i, j;

if(start >= end) return -1;


pivot = start;
i = start;
j = end;

while(i < j)
{
while(arr[i] <= arr[pivot] && i < end) i++;
while(arr[j] > arr[pivot]) j--;

if( i < j)
{
tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}

tmp = arr[pivot];
arr[pivot] = arr[j];
arr[j] = tmp;

return j;
}

void quicksort(int *arr, int start, int end){

int p = 0;
if(start < end)
{
p = partition(arr, start, end);
quicksort(arr, start, p-1);
quicksort(arr, p+1, end);
}
}

void main()
{
int arr[] = {80, 47, 55, 16, 24, 8, 61, 2, 39};
int i = 0;

printf("Array before sorting: ");


for (i = 0; i < (sizeof(arr)/sizeof(int)); i++) printf(" %d", arr[i]);
printf("\n");

quicksort(arr, 0, sizeof(arr)/sizeof(int) - 1);


printf("Array after sorting: ");
for (i = 0; i < (sizeof(arr)/sizeof(int)); i++) printf(" %d", arr[i]);
printf("\n");
}
Output:

You might also like