注意:
代码随机生成0~99的随机数放到初始数组中。
代码:
#include<iostream>
#include<ctime>
using namespace std;
void Individual(int A[], int size)
{
srand((unsigned)time(NULL));
for (int i = 0; i < size; i++)
A[i] = rand() % 100;
}
void Output(int A[], int size)
{
cout << endl;
for (int i = 0, j = 0; i < size; i++)
{
cout << A[i] << " ";
j++;
if (j == 10)
{
cout << endl;
j = 0;
}
}
cout << endl;
}
void CountSort(int A[], int size)
{
//声明计数数组,范围0~99(A[]中随机数的范围),并初始化为0(表示A[]的值为index出现的次数)
int countArr[100] = {0};
//统计A中数字出现的个数
for (int i = 0; i < size; i++)
countArr[A[i]]++;
//把数字出现的次数叠加
for (int i = 1; i < 100; i++)
countArr[i] += countArr[i - 1];
int* sortArr = new int[size];
//遍历A的元素。。。
for (int i = 0; i < size; i++)
{
sortArr[countArr[A[i]] - 1] = A[i];
--countArr[A[i]];
}
//排好序的数组赋值回去
for (int i = 0; i < size; i++)
{
A[i] = sortArr[i];
}
delete[] sortArr;
}
int main()
{
int n;
cout << "请输入要排序的数组大小:" << endl;
cin >> n;
int* array = new int[n];
Individual(array, n);
Output(array, n);
CountSort(array, n);
Output(array, n);
delete[] array;
return 0;
}