计数排序

来源:互联网 发布:用友通软件 编辑:程序博客网 时间:2024/05/22 16:50

计数排序



<span style="font-size:18px;">//获取数组中最大值size_t GetMaxNum(int* arr, int len){assert(arr && len > 0);int i = 0;int maxNum = arr[i++];for (; i<len; ++i){if (maxNum < arr[i]){maxNum = arr[i];}}return maxNum;}//计数排序void CountSort(int* arr,int len){assert(arr && len > 0);//获取要开辟的临时空间的大小int Capacity = GetMaxNum(arr, len);int* tmp = new int[Capacity + 1];int i = 0;//初始化临时数组for (i = 0; i <= Capacity; ++i){tmp[i] = 0;}//统计数组中每个数的个数for (i = 0; i < len; ++i){++tmp[arr[i]];}//从临时开辟的空间中按照次数打印下标(下标n即数组中的数)i = 0;int n = 0;for (n = 0; n <= Capacity; ++n){while (tmp[n]--){arr[i] = n;++i;}}cout << endl;delete[] tmp;}</span>


0 0
原创粉丝点击