<排序算法> 计数排序CountSort

川长思鸟来 2021-11-05 11:01 434阅读 0赞

代码实现:

  1. 1 #include<iostream>
  2. 2 using namespace std;
  3. 3
  4. 4 void PrintArr(int arr[],int len);
  5. 5 void CountSort(int arr[],int len)
  6. 6 {
  7. 7 if(arr == NULL || len <= 0) return ;
  8. 8
  9. 9 int min = arr[0];
  10. 10 int max = arr[0];
  11. 11 int i;
  12. 12 for(i=0;i<len;i++)
  13. 13 {
  14. 14 if(arr[i] < min)
  15. 15 min = arr[i];
  16. 16 if(arr[i] > max)
  17. 17 max = arr[i];
  18. 18 }
  19. 19
  20. 20 int* arrcount = (int*)malloc(sizeof(int)*(max-min+1));
  21. 21 memset(arrcount,0,sizeof(int)*(max-min+1));
  22. 22 for(i=0;i<len;i++)
  23. 23 {
  24. 24 arrcount[arr[i]-min] ++;
  25. 25 }
  26. 26
  27. 27 int j=0;
  28. 28 for(i=0;i<max-min+1;i++)
  29. 29 {
  30. 30 if(arrcount[i] != 0)
  31. 31 while(arrcount[i]--)
  32. 32 arr[j++] = i + min;
  33. 33 }
  34. 34
  35. 35 return ;
  36. 36 }
  37. 37
  38. 38 void PrintArr(int arr[],int len)
  39. 39 {
  40. 40 for(int i=0;i<len;i++)
  41. 41 cout << arr[i] << " ";
  42. 42 cout << endl;
  43. 43
  44. 44 return ;
  45. 45 }
  46. 46
  47. 47 int main()
  48. 48 {
  49. 49 //int arr[10] = {9,8,7,6,5,4,3,2,1,0};
  50. 50 //int arr[10] = {4,8,6,3,7,2,9,5,0,1};
  51. 51 int arr[10] = {
  52. 4,4,2,3,3,8,8,8,5,5};
  53. 52 CountSort(arr,sizeof(arr)/sizeof(arr[0]));
  54. 53 PrintArr(arr,sizeof(arr)/sizeof(arr[0]));
  55. 54
  56. 55 system("pause");
  57. 56 return 0;
  58. 57 }

转载于:https://www.cnblogs.com/Aaaaaalei0612/p/11218786.html

发表评论

表情:
评论列表 (有 0 条评论,434人围观)

还没有评论,来说两句吧...

相关阅读

    相关 排序算法 - 计数排序

    基本思想 计数排序是一种线性排序算法,它利用了一个数组,因为数组下标的增长是线性的,所以它就把自己的元素转换成新开辟数组的下标。可是下标都是非负数啊?数组当中的值有正有负

    相关 排序算法计数排序

    \[非比较排序-计数排序\] 1.算法思想 计数排序要求数据必须是有确定范围的整数,需要定义一个新的数组,新数组的长度是根据原数组最大值和最小值来确定的,该数组用

    相关 排序算法——计数排序

    排序算法——计数排序 > 计数排序是一个非基于比较的排序算法。它的优势在于在对一定范围内的整数排序时,快于任何比较排序算法。 这是一种牺牲空间换取时间的做法,当O(k)>

    相关 线性排序算法-计数排序

    我们前面分析过几种排序算法,时间复杂度为O(![n^\{2\}][n_2])如[冒泡排序,插入排序和选择排序][Link 1]等,时间复杂度为O(nlogn),如[归并排序][

    相关 排序算法 —— 计数排序

    引言 计数排序是桶排序思想的一种具体实现,针对一些具有特殊限制的样本数据,如公司员工年龄,那么样本数据本身就一定在0~200之间,针对这样的数据,使用从0到200 的桶数

    相关 排序算法——计数排序

    前言 计数排序的思想:在给定的数组中,依次寻找比当前数字小的元素的个数(count),统计之后直接使用t就可以定位到该数所在的位置,因为比它小的元素的个数已经通过coun