<排序算法> 计数排序CountSort
代码实现:
1 #include<iostream>
2 using namespace std;
3
4 void PrintArr(int arr[],int len);
5 void CountSort(int arr[],int len)
6 {
7 if(arr == NULL || len <= 0) return ;
8
9 int min = arr[0];
10 int max = arr[0];
11 int i;
12 for(i=0;i<len;i++)
13 {
14 if(arr[i] < min)
15 min = arr[i];
16 if(arr[i] > max)
17 max = arr[i];
18 }
19
20 int* arrcount = (int*)malloc(sizeof(int)*(max-min+1));
21 memset(arrcount,0,sizeof(int)*(max-min+1));
22 for(i=0;i<len;i++)
23 {
24 arrcount[arr[i]-min] ++;
25 }
26
27 int j=0;
28 for(i=0;i<max-min+1;i++)
29 {
30 if(arrcount[i] != 0)
31 while(arrcount[i]--)
32 arr[j++] = i + min;
33 }
34
35 return ;
36 }
37
38 void PrintArr(int arr[],int len)
39 {
40 for(int i=0;i<len;i++)
41 cout << arr[i] << " ";
42 cout << endl;
43
44 return ;
45 }
46
47 int main()
48 {
49 //int arr[10] = {9,8,7,6,5,4,3,2,1,0};
50 //int arr[10] = {4,8,6,3,7,2,9,5,0,1};
51 int arr[10] = {
4,4,2,3,3,8,8,8,5,5};
52 CountSort(arr,sizeof(arr)/sizeof(arr[0]));
53 PrintArr(arr,sizeof(arr)/sizeof(arr[0]));
54
55 system("pause");
56 return 0;
57 }
转载于//www.cnblogs.com/Aaaaaalei0612/p/11218786.html
还没有评论,来说两句吧...