c ++在数组中查找数字的出现次数

时间:2011-05-03 20:46:36

标签: c++ arrays

在整数数组0-100中,任何人都可以编写一个函数来计算每个可能值的出现次数,然后覆盖原始数组吗? (不,这不是作业,它的练习测试,所以我可以学习)

1 个答案:

答案 0 :(得分:2)

void 
count_sort(int min, int max, int & A[], int items) {

这是一些让你入门的东西。我们知道A[]的任何成员只能持有0到100之间的数字。我们需要一个地方来保存每个数字的数量(即0 ... 100)。我们自己的另一个数组,每个可能数字的计数器,是这样一组计数的自然地方:

int counts[101];                 // there are 101 numbers in 0 ... 100 inclusive
int i;                           // we'll use this an an index into the counts[ ] array
int j;                           // this we can use as an index into A[]

我们不能忘记使count []数组的所有成员都为零,否则我们所有的总数都是无意义的:

for ( i = 0; i < 101; i++ ) {    // so let's preset all of the counts to 0
  counts[i] = 0;
}

现在您可以从上到下阅读输入数组。从数组中取一个数字时,将其用作counts []数组的索引,在该数组中保存您找到的数字的运行总数。因此,假设您从输入数组中检索数字35:

i = next_input_array_number( );   // i will be 35 after this is executed

现在你有(在i中)下一个数字;你有一个地方可以计算它的出现次数:counts[35]。你现在如何增加counts[35]

然后一个接一个地从输入数组中获取数字,直到你看到它们的所有items为止。当你完成输入数组时 - 也就是说,在你看到并计算了所有数字之后 - 你们都已经完成了,并且count []数组将保持输入数组中每个数字的总时间。 / p>

你要做的是弄清楚如何从输入数组中获取数字;也就是说,你必须用一些代码替换“next_input_array_number();”。

请发布您将用于从输入数组中检索数字的代码。