问题:给定一个数组,输出各元素出现的次数。
目录
法一:逐个统计
法二:用数组以值代址
法三:先排序,再进行统计
法四:利用哈希表进行统计
法一:逐个统计
思路:
数组第一个数为目标,遍历数组进行统计,统计后的数据替换成0(表示已删除),统计后输出数目。
优点:呃。。不需要明确指出数组的具体大小
缺点:时间复杂度较高,最高可达![eq?n%5E%7B%7Bn%7D%7D](https://latex.csdn.net/eq?n%5E%7B%7Bn%7D%7D)
//计数函数
int COUNT(int* arr, int size, int tar,int pos)
{
int count = 0;
for (int j = pos; j < size; j++)
{
if (arr[j] == tar)
{
arr[j] = 0;
count++;
}
}
return count;
}
void solution1(int * arr, int size) {
int pos = 0;//记录查找起始位置,辅助确定查找目标
int tar; //记录查找目标
bool flag = true;//数组是否全部为0
while (flag){
flag = false;//数组中无可统计元素
for (pos = pos; pos < size; pos++) //检查数组是否全部为0
{
if (arr[pos] != 0)
{
tar = arr[pos];//记录查找目标
flag = true;//数组中有可统计的元素
cout |