计数排序算法的个人理解
个人理解,如果有误,欢迎留言
话不多说,直接上代码
计数排序思想就是先一个比原数组a中最大的那个元素还要大的数组b,并将数组初始化为0,然后通过循环遍历,将a数组的值作为b数组的下标,并将下标对应的那个值由0变为1,最后通过循环遍历将b数组中值不为0的下标输出(记得输出的是b数组的下标而非值)
#include <iostream>
using namespace std;
int main()
{
int a[10] = {49,1,98,5,31,61,67,34,9,16};
int i,max = a[0];
for(i = 1; i < 10; i++){
if(max < a[i]){
max = a[i];
}
}
int b[max+1];
for(i = 0; i < max+1;i++){
b[i] = 0;
}
for(i = 0;i < 10; i++){
b[a[i]]++;
}
for(i = 0;i < max+1; i++){
if(b[i] != 0){
cout << i << " ";
}
}
return 0;
}