Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

3.quick Sort Ansd Merge Sort

Download as pdf or txt
Download as pdf or txt
You are on page 1of 6

To perform menu driven code for searching technique:-

 Quick sort
 Merge sort

Code:-
#include <stdio.h>

#include <stdlib.h>

void quickSort(int[], int, int);

void mergeSort(int[], int, int);

int main() {

int n, arr[100];

int i;

int ch, cont;

do {

printf("Enter size of array: ");

scanf("%d", &n);

printf("Enter values of array:\n");

for(i = 0; i < n; i++) {

scanf("%d", &arr[i]);

printf("Enter sorting algorithm to use:\n1: Quick sort\n2: Merge sort\n");

scanf("%d", &ch);

switch(ch) {

case 1:

quickSort(arr, 0, n - 1);

break;

case 2:
mergeSort(arr, 0, n - 1);

break;

default:

printf("Invalid option!");

for(i = 0; i < n; i++) {

printf("%d ", arr[i]);

printf("\nContinue? 1/0:\t");

scanf("%d", &cont);

} while(cont == 1);

return 0;

int partition(int arr[], int offset, int size) {

int x = arr[size];

int i = offset - 1;

int j;

int temp;

for(j = offset; j < size; j++) {

if (arr[j] <= x) {

i++;

temp = arr[i];

arr[i] = arr[j];

arr[j] = temp;

temp = arr[i + 1];


arr[i + 1] = arr[size];

arr[size] = temp;

return i + 1;

void quickSort(int arr[], int offset, int size) {

int pivot;

if (offset < size) {

pivot = partition(arr, offset, size);

quickSort(arr, offset, pivot - 1);

quickSort(arr, pivot + 1, size);

void merge(int arr[], int offset, int mid, int size) {

int n1 = mid - offset + 1;

int n2 = size - mid;

int* l = (int*)calloc(n1 + 1, sizeof(int));

int* r = (int*)calloc(n2 + 1, sizeof(int));

int i, j, k;

for(i = 0; i < n1; i++) {

*(l + i) = arr[offset + i];

for(j = 0; j < n2; j++) {

*(r + j) = arr[mid + j + 1];

*(l + n1) = 32767;

*(r + n2) = 32767;

i = j = 0;

for(k = offset; k <= size; k++) {

if(*(l + i) <= *(r + j)) {


arr[k] = *(l + i);

i++;

else {

arr[k] = *(r + j);

j++;

free(l);

free(r);

void mergeSort(int arr[], int offset, int size) {

if (offset < size) {

int mid = (offset + size) / 2;

mergeSort(arr, offset, mid);

mergeSort(arr, mid + 1, size);

merge(arr, offset, mid, size);

}
Output:-

Enter size of array: 5

Enter values of array:

23

12

67

45

Enter sorting algorithm to use:

1: Quick sort

2: Merge sort

8 12 23 45 67

Continue? 1/0: 1

Enter size of array: 4

Enter values of array:

67

22

Enter sorting algorithm to use:

1: Quick sort

2: Merge sort

2
1 4 22 67

Continue? 1/0: 0

You might also like