我有一个大小为N的双数组,其元素由代码计算。看起来像这样:
a,b,a,a,b,c,...
所以它有重复的元素。例如a重复10次,b重复12次等。
我想输出这样的东西:
a:10
b:12
这样做的好算法是什么?
答案 0 :(得分:1)
如果元素是浮点,则两个值完全相等的概率非常低(由于表示浮点数的方式)。
您可能想要计算两个数字之间的绝对差值,并与某些epsilon值(如1.0E-5)进行比较。如果差值小于epsilon,请考虑值相等。
一种算法是对数组进行排序。只要连续值“相等”,就递增计数器。
答案 1 :(得分:1)
char y[] = { 'a', 'b', 'a', 'c' };
int count[52] = {0};
for (int i = 0; i < (sizeof(x) / sizeof(char)); i++)
{
if (y[i] >= 65 && y[i] <= 90)
count[y[i] - 'A']++;
else if (y[i] >= 97 && y[i] <= 122)
count[(y[i] - 'a') + 26]++;
}
for (int i = 0; i < 52; i++)
{
if (i < 26 && count[i] > 0)
cout << char('A' + i) << ": " << count[i] << endl;
else if (i >= 26 && count[i] > 0)
cout << char('a' + i - 26) << ": " << count[i] << endl;
}