Add Radix Sort (#58)
* Add radix-sort algorithm * Update README.md * Update radix-sort.cpp Update code to accept all test cases * Update radix-sort.cpp fixing function name Co-authored-by: Arsenic <54987647+Arsenic-ATG@users.noreply.github.com>pull/66/head^2
parent
8fe732db19
commit
cc5da8777a
|
@ -10,8 +10,8 @@
|
|||
6. [Heap Sort](c-or-cpp/heap-sort.cpp)
|
||||
7. [Counting Sort](c-or-cpp/counting-sort.cpp)
|
||||
8. [Bucket Sort](c-or-cpp/bucket-sort.cpp)
|
||||
9. [Shell Sort](c-or-cpp/shell-sort.cpp)
|
||||
|
||||
9. [Radix Sort](c-or-cpp/radix-sort.cpp)
|
||||
10. [Shell Sort](c-or-cpp/shell-sort.cpp)
|
||||
|
||||
|
||||
### C#
|
||||
|
|
|
@ -0,0 +1,54 @@
|
|||
//Author: Tawfik Yasser
|
||||
#include <iostream>
|
||||
#include<algorithm>
|
||||
using namespace std;
|
||||
int getMax(int array[], int n) {
|
||||
int max = array[0];
|
||||
for (int i = 1; i < n; i++)
|
||||
if (array[i] > max)
|
||||
max = array[i];
|
||||
return max;
|
||||
}
|
||||
void countingSort(int array[], int size, int place) {
|
||||
const int max = 10;
|
||||
int output[size];
|
||||
int count[max];
|
||||
|
||||
for (int i = 0; i < max; ++i)
|
||||
count[i] = 0;
|
||||
|
||||
for (int i = 0; i < size; i++)
|
||||
count[(array[i] / place) % 10]++;
|
||||
|
||||
for (int i = 1; i < max; i++)
|
||||
count[i] += count[i - 1];
|
||||
|
||||
for (int i = size - 1; i >= 0; i--) {
|
||||
output[count[(array[i] / place) % 10] - 1] = array[i];
|
||||
count[(array[i] / place) % 10]--;
|
||||
}
|
||||
|
||||
for (int i = 0; i < size; i++)
|
||||
array[i] = output[i];
|
||||
}
|
||||
|
||||
void radixSort(int array[], int size) {
|
||||
int max = getMax(array, size);
|
||||
for (int place = 1; max / place > 0; place *= 10)
|
||||
countingSort(array, size, place);
|
||||
}
|
||||
|
||||
//Print the sorted array
|
||||
void printSortedArray(int arr[],int n){
|
||||
for(int i=0;i<n;i++){
|
||||
cout<<arr[i]<<endl;
|
||||
}
|
||||
}
|
||||
int main()
|
||||
{
|
||||
int arr[] = {432,8,530,90,88,231,11,45,677,199}; // Unsorted Array
|
||||
int arr_size = sizeof(arr) / sizeof(arr[0]); // Getting array size
|
||||
radixSort(arr,arr_size); // Send the array to radixSort
|
||||
printSortedArray(arr,arr_size); // Print the sorted array
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue