-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcounting_sort.cpp
More file actions
34 lines (30 loc) · 809 Bytes
/
counting_sort.cpp
File metadata and controls
34 lines (30 loc) · 809 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <iostream>
#include <cstring>
using namespace std;
#define MAX 100
void countingSort(int arr[], int size, int b[]) {
// sizeof (arr) == 4
// memcpy(b, arr, size);
int c[MAX] = {0};
for (int i=0; i<size; i++) {
c[arr[i]]++;
}
for (int i=1; i<MAX; i++) {
c[i] += c[i-1];
}
for (int i=size-1; i>=0; i--) {
b[c[arr[i]]] = arr[i];
c[arr[i]]--;
cout << i << " " << arr[i] << " " << c[arr[i]] << " " << b[c[arr[i]]] << endl;
}
}
int main(int argc, char *argv[]) {
int arr[] ={23,45,1,23,57,5,43,3,1,2,34,7,5,5,4,3,22,6,5,23,2,2,1,5,6,6,12,68,4,3,2,18,4,33,9,76,8,9,0,0,94,32,1,5,6};
unsigned const size = sizeof(arr)/sizeof(int);
int b[size]={0};
countingSort(arr, size, b);
for (int i=0; i<size; i++) {
cout << b[i] << " ";
}
cout << endl;
}