房天下 > 房天下问答 > 业主生活 > 其他
  • 程序设计 计数排序的一点小问题

    a为输入,b为输出,l为元素个数,k为元素最大值。void Counting_Sort(int a[], int b[], int l, int k)...{ int* c = new int[k]; memset(c, 0, k * sizeof(int)); for (int j = 0; j < l; j++) c[a[j]]++; for (int j = 1; j < k; j++) c[j] += c[j - 1]; for (int j = l - 1; j >= 0; j--) ...{ b[c[a[j]] - 1] = a[j]; c[a[j]]-- } delete c[];} c[a[j]]++这个是计算c数组里有多少个与a[j]相同的数的个数。但是我不明白这个数组 ,在系统里是如何执行的? 请大家帮帮忙啊

    提问者:灵剑江湖

    发布于2011-01-18

共1个回答
  • 梦来财传奇 丨Lv 4
    c是分配了 以a中最大元素为长度的内存 a[j]其实就是c的地址索引了 一旦存在 a[j]与a[m]相同 l与m是a的数组索引 c[a[j]]其实与c[a[m]]是相同的 这时候 c[a[j]]++其实就是对c中索引为a[j]的值+1这样就实现了相同元素计数的功能
    +1 2011-01-18 举报
热门人气推荐
免责声明:问答内容均来源于互联网用户,房天下对其内容不负责任,如有版权或其他问题可以联系房天下进行删除。