0% found this document useful (0 votes)
10 views3 pages

LAB10-QUICK SORT

The document outlines a C/C++ program that implements the Quick Sort algorithm to sort a set of integer elements and measures its time complexity for values of n greater than 5000. The program generates random numbers, sorts them, and records the time taken for sorting, which is then used to plot a graph of time versus n. The results demonstrate the efficiency of Quick Sort with increasing input sizes, confirming successful execution of the program.

Uploaded by

ananya.r.amcec
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
10 views3 pages

LAB10-QUICK SORT

The document outlines a C/C++ program that implements the Quick Sort algorithm to sort a set of integer elements and measures its time complexity for values of n greater than 5000. The program generates random numbers, sorts them, and records the time taken for sorting, which is then used to plot a graph of time versus n. The results demonstrate the efficiency of Quick Sort with increasing input sizes, confirming successful execution of the program.

Uploaded by

ananya.r.amcec
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 3

Design and implement C/C++ Program to sort a given set of n integer elements using Quick Sort method and

compute its
time complexity. Run the program for varied values of n> 5000 and record the time taken to sort. Plot a graph of the time
taken versus n. The elements can be read from a file or can be generated using the random number generator. .
Aim:
To sort a given set of n integer elements using Quick sort and plot the graph between time and different number of Values
(n > 5000).
Algorithm:
ALGORITHM Quicksort(A[l..r ] )
//Sorts a sub array by quicksort
//Input: Sub array of array A[0..n - 1], defined by its left and right
// indices l and r
//Output: Subarray A[l..r ] sorted in non-decreasing order
if l<r
s ←Partition(A[l..r ] ) //s is a split position
Quicksort(A[l..s - 1])
Quicksort(A[s + 1..r ] )
Program:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// Function to swap two elements
void swap(int* a, int* b)
{
int t = *a;
*a = *b;
*b = t;
}
// Partition function for Quick Sort
int partition(int arr[], int low, int high)
{
int pivot = arr[high]; // Pivot element
int i = (low - 1); // Index of smaller element
for (int j = low; j <= high - 1; j++)
{
if (arr[j] < pivot)
{
i++; // Increment index of smaller element
swap(&arr[i], &arr[j]);
}
}
swap(&arr[i + 1], &arr[high]);
return (i + 1);
}
// Quick Sort function
void quickSort(int arr[], int low, int high)
{
if (low < high)
{
int pi = partition(arr, low, high);
// Recursively sort elements before and after partition
quickSort(arr, low, pi - 1);
quickSort(arr, pi + 1, high);
}
}
// Function to generate random numbers
void generateRandomNumbers(int arr[], int n)
{
for (int i = 0; i < n; i++)
{
arr[i] = rand() % 100000; // Generate random numbers between 0 and 99999
}
}
int main()
{
int n;
printf("Enter number of elements: ");
scanf("%d", &n); // Read the number of elements from the user
if (n <= 5000)
{
printf("Please enter a value greater than 5000\n");
return 1; // Exit if the number of elements is not greater than 5000
}
// Allocate memory for the array
int *arr = (int *)malloc(n * sizeof(int));
if (arr == NULL)
{
printf("Memory allocation failed\n");
return 1; // Exit if memory allocation fails
}
// Generate random numbers and store them in the array
generateRandomNumbers(arr, n);
// Measure the time taken to sort the array
clock_t start = clock();
quickSort(arr, 0, n - 1);
clock_t end = clock();
// Calculate and print the time taken to sort the array
double time_taken = ((double)(end - start)) / CLOCKS_PER_SEC;
printf("Time taken to sort %d elements: %f seconds\n", n, time_taken);
// Free the allocated memory
free(arr);
return 0;
}
Input:
Enter number of elements: 10000
Enter number of elements: 20000
Enter number of elements: 30000
Enter number of elements: 40000
Enter number of elements: 50000

Output:
Time taken to sort 10000 elements: 0.001326 seconds
Time taken to sort 20000 elements: 0.003100 seconds
Time taken to sort 30000 elements: 0.004371 seconds
Time taken to sort 40000 elements: 0.006876 seconds
Time taken to sort 50000 elements: 0.008130 seconds

Conclusion:
Thus the program was executed sucessfully

You might also like