计数排序的原理:
(1)首先,找出最大的元素,给“count[ ]”申请“最大元素的下标+1”个单元(因为数组下标是从0开始的,所以要+1);
(2)然后,统计每个元素出现的次数,把次数存到“count[ ]”里;
(3)最后,通过一个元素出现的次数-1,从而算出正确顺序的位置,再把元素放进去,就有顺序了。
因为不知道范围的大小,所以需要申请内存,如果知道范围的大小,就可以直接声明。
#include <iostream>
#include <stdlib.h>
using namespace std;
/**********************************************/
/* 计数排序
/*********************************************/
void CountingSort(int array[], int n)
{
int i;
int largest = array[0]; //设最初最大元素默认是array[0]
int *temp = new int[n]; //申请一个n个int元素的数组内存
for (i = 1; i < n; i++)
{
if (largest < array[i]) //找出最大元素
{
largest = array[i];
}
}
int *count = new int[largest + 1]; //申请一个[largest+1]个int元素的数组内存
for (i = 0; i <= largest; i++)
{
count[i] = 0; //初始化
}
f

本文介绍了计数排序的基本原理,包括找出最大元素确定数组大小、统计元素出现次数及计算排序位置的过程。虽然该方法需要额外内存,但如果知道数据范围,可以更高效地应用。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



