Update radix_sort_3.c

This commit is contained in:
Pronay Debnath 2023-10-01 13:41:45 +05:30 committed by GitHub
parent 4a59273d71
commit f41450a514
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,5 +1,18 @@
#include <stdio.h> #include <stdio.h>
// Define a struct to represent an array of integers
struct IntArray {
int *data;
int size;
};
/**
* Find the maximum element in the array.
*
* @param arr The array to find the maximum element in.
* @param n The number of elements in the array.
* @return The maximum element in the array.
*/
int findMax(int arr[], int n) { int findMax(int arr[], int n) {
int max = arr[0]; int max = arr[0];
for (int i = 1; i < n; i++) { for (int i = 1; i < n; i++) {
@ -10,6 +23,13 @@ int findMax(int arr[], int n) {
return max; return max;
} }
/**
* Perform counting sort on the array based on the specified digit place (exp).
*
* @param arr The array to be sorted.
* @param n The number of elements in the array.
* @param exp The digit place (e.g., 1 for units, 10 for tens).
*/
void countingSort(int arr[], int n, int exp) { void countingSort(int arr[], int n, int exp) {
int output[n]; int output[n];
int count[10] = {0}; int count[10] = {0};
@ -32,6 +52,12 @@ void countingSort(int arr[], int n, int exp) {
} }
} }
/**
* Perform Radix Sort on the given integer array.
*
* @param arr The array to be sorted.
* @param n The number of elements in the array.
*/
void radixSort(int arr[], int n) { void radixSort(int arr[], int n) {
int max = findMax(arr, n); int max = findMax(arr, n);
@ -45,20 +71,28 @@ int main() {
printf("Enter the number of elements: "); printf("Enter the number of elements: ");
scanf("%d", &n); scanf("%d", &n);
int arr[n]; // Create a struct to hold the integer array
struct IntArray array;
array.size = n;
array.data = (int *)malloc(n * sizeof(int));
printf("Enter the elements: "); printf("Enter the elements: ");
for (int i = 0; i < n; i++) { for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]); scanf("%d", &array.data[i]);
} }
radixSort(arr, n); // Perform Radix Sort
radixSort(array.data, array.size);
printf("Sorted array: "); printf("Sorted array: ");
for (int i = 0; i < n; i++) { for (int i = 0; i < n; i++) {
printf("%d ", arr[i]); printf("%d ", array.data[i]);
} }
printf("\n"); printf("\n");
// Free the dynamically allocated memory
free(array.data);
return 0; return 0;
} }