Quick sort

Quicksort is a simple sorting algorithm using the divide-and-conquer recursive procedure.It is the quickest comparison-based sorting algorithm in practice with an average running time of O(n log(n)).It is also known as partition-exchange sort.




Algorithm


QUICKSORT(A, p, r)

1. if p < r

2.	q = PARTITION(A, p, r)

3.	QUICKSORT(A, p, q - 1)

4.	QUICKSORT(A, q + 1, r)



PARTITION(A, p, r)

1. x = A[r]

2. i = p - 1

3. for j = p to r - 1

4.		if A[j] <= x

5.			i = i + 1

6.			exchange A[i] with A[j]

7. exchange A[i + 1] with A[r]

8. return i + 1




Quick sort Implementation


#include<stdio.h>

#include<conio.h>

void quicksort(int arr[], int lb, int ub);

void main()

{

	int arr[20], n, i;

	clrscr();

	printf("\n\t\t\t------Quick Sort------\n\n");

	printf("Enter the size of the array:");

	scanf("%d",&n);

	printf("Enter the elements to be sorted:\n");

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

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

	quicksort(arr, 0, n-1);

	printf("\n\t\t\t-----Quick Sorted Elements-----\n\n");

	printf("Sorted array:");

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

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

	getch();

}

void quicksort(int arr[], int lb, int ub)

{

	int pivot, i, j, temp;

	if(lb < ub)

	{

		pivot = lb;

		i = lb;

		j = ub;

		while(i < j)

		{

			while(arr[i] <= arr[pivot] &&  i <= ub)

			i++;

			while(arr[j] > arr[pivot] && j >= lb)

			j--;

			if(i < j)

			{

				temp = arr[i];

				arr[i] = arr[j];

				arr[j] = temp;

			}

		}

		temp = arr[j];

		arr[j] = arr[pivot];

		arr[pivot] = temp;

		quicksort(arr, lb, j-1);

		quicksort(arr, j+1, ub);

	}

}




OUTPUT