响应式网站怎么设置,开发软件的app有哪些,制作图网在线制作,提供网站建设优势思路详解#xff1a;
1 找到数组中的最大值、最小值
2 开辟一个统计每个数据出现次数的数组#xff08;总个数是最大值-最小值1#xff0c;因为下标范围是0~最大值-最小值#xff0c;闭区间统计个数要1#xff09;
3 遇到一个元素#xff0c;在此元素-最小值作为下标的…思路详解
1 找到数组中的最大值、最小值
2 开辟一个统计每个数据出现次数的数组总个数是最大值-最小值1因为下标范围是0~最大值-最小值闭区间统计个数要1
3 遇到一个元素在此元素-最小值作为下标的空间处统计次数
4 遍历计数数组不为空则数值是几就写入几次 下标最小值到原数组
代码实现
void CountSort(int* a, int n)
{int i 0;int min a[0];int max a[0];for (i 0; i n; i)//找最大值、最小值{if (a[i] min){min a[i];}if (a[i] max){max a[i];}}int range max-min 1;int* tmp (int*)malloc(sizeof(int) * range);memset(tmp, 0, sizeof(int) * range);//初始化数组内容全部为0方便统计否则是随机值for (i 0; i n; i)//统计数据出现次数{tmp[a[i] - min];}int k 0;for (i 0; i range; i)//根据数据出现次数从下标0开始写入原数组{while (tmp[i]--){a[k] i min;}}
}
完结撒花~