Experiment No 2
Experiment No 2
i++;
}
// condition 2: find the first
element smaller
than
// the pivot (from last)
while (arr[j] > pivot && j >= low +
1) {
j--;
}
if (i < j) {
swap(&arr[i], &arr[j]);
}
}
swap(&arr[low], &arr[j]);
return j;
}
void quickSort(int arr[], int low,
int high) {
if (low < high) {
// call Partition function to find
Partition
Index
int partitionIndex = partition(arr,
low, high);
// Recursively call quickSort() for
left and
right
// half based on partition Index
quickSort(arr, low, partitionIndex
- 1);
quickSort(arr, partitionIndex + 1,
high);
}
}
int main() {
int arr[] = { 19, 7, 15, 12, 16,
18, 4, 11, 13 };
int n = sizeof(arr) /
sizeof(arr[0]);
printf("Original array: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
// calling quickSort() to sort the
given array
quickSort(arr, 0, n - 1);
printf("\nSorted array: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
Output:
Original array: 19 7 15 12 16 18 4
11 13
Sorted array: 4 7 11 12 13 15 16 18
19
/* Program to perform merge sort */
#include <stdio.h>
// Create temporary
arrays
int leftArr[n1],
rightArr[n2];
// Copy data to
temporary arrays leftArr[]
and rightArr[]
for (i = 0; i < n1; i++)
leftArr[i] =
arr[left + i];
for (j = 0; j < n2; j++)
rightArr[j] =
arr[mid + 1 + j];
// Function to implement
Merge Sort
void mergeSort(int arr[],
int left, int right) {
if (left < right) {
int mid = left +
(right - left) / 2; //
Avoids overflow for large
values
// Recursively sort
the first and second halves
mergeSort(arr, left,
mid);
mergeSort(arr, mid +
1, right);
// Function to print an
array
void printArray(int arr[],
int size) {
for (int i = 0; i <
size; i++)
printf("%d ",
arr[i]);
printf("\n");
}
// Main function
int main() {
int arr[] = {12, 11, 13,
5, 6, 7};
int size = sizeof(arr) /
sizeof(arr[0]);
printf("Original array:
\n");
printArray(arr, size);
mergeSort(arr, 0, size -
1);
printf("Sorted array:
\n");
printArray(arr, size);
return 0;
}
Output:
Original array:
12 11 13 5 6 7
Sorted array:
5 6 7 11 12 13