#include <stdio.h>
// Function to swap two elements
void swap(int* a, int* b) {
int temp = *a;
*a = *b;
*b = temp;
}
// Function to partition array for quicksort
int partition(int arr[], int low, int high) {
int pivot = arr[high];
int i = low - 1;
for (int j = low; j <= high - 1; j++) {
if (arr[j] < pivot) {
i++;
swap(&arr[i], &arr[j]);
}
}
swap(&arr[i + 1], &arr[high]);
return i + 1;
}
// Quicksort algorithm
void quicksort(int arr[], int low, int high) {
if (low < high) {
int pi = partition(arr, low, high);
quicksort(arr, low, pi - 1);
quicksort(arr, pi + 1, high);
}
}
// Function to merge two subarrays for mergesort
void merge(int arr[], int left, int mid, int right) {
int n1 = mid - left + 1;
int n2 = right - mid;
int leftArr[n1];
int rightArr[n2];
for (int i = 0; i < n1; i++) {
leftArr[i] = arr[left + i];
}
for (int j = 0; j < n2; j++) {
rightArr[j] = arr[mid + 1 + j];
}
int i = 0, j = 0, k = left;
while (i < n1 && j < n2) {
if (leftArr[i] <= rightArr[j]) {
arr[k] = leftArr[i];
i++;
} else {
arr[k] = rightArr[j];
j++;
}
k++;
}
while (i < n1) {
arr[k] = leftArr[i];
i++;
k++;
}
while (j < n2) {
arr[k] = rightArr[j];
j++;
k++;
}
}
// Mergesort algorithm
void mergesort(int arr[], int left, int right) {
if (left < right) {
int mid = (left + right) / 2;
mergesort(arr, left, mid);
mergesort(arr, mid + 1, right);
merge(arr, left, mid, 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");
}
int main() {
int arr1[] = {10, 7, 8, 9, 1, 5};
int n1 = sizeof(arr1) / sizeof(arr1[0]);
printf("Original array: ");
printArray(arr1, n1);
quicksort(arr1, 0, n1 - 1);
printf("Array after QuickSort: ");
printArray(arr1, n1);
int arr2[] = {10, 7, 8, 9, 1, 5};
int n2 = sizeof(arr2) / sizeof(arr2[0]);
printf("Original array: ");
printArray(arr2, n2);
mergesort(arr2, 0, n2 - 1);
printf("Array after MergeSort: ");
printArray(arr2, n2);
return 0;
}
See why 4M developers consider Sentry, “not bad.”
Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.
For further actions, you may consider blocking this person and/or reporting abuse
Top comments (1)
which of these implementations are stable? ie if the value at i and j in the array have the same sort value, with i<j, do those values end up at places i' and j' where i'<j'?
Also, title says C, tags say java, which is it?