【问题标题】:c bead sort would like helpc珠排序需要帮助
【发布时间】:2011-05-10 18:34:47
【问题描述】:

我在一个数组中有一个大的正整数列表,我想使用珠排序,但发现没有很好的文档记录。谁有珠子排序的代码?

【问题讨论】:

    标签: c sorting


    【解决方案1】:

    此页面有多种语言的实现,包括 C: http://rosettacode.org/wiki/Sorting_algorithms/Bead_sort

    【讨论】:

      【解决方案2】:

      This Question 开始,对 Bead Sort 进行了修改,它使用 O(N) 额外空间而不是 Rosetta Code 版本中的 O(N*k)

      void sort(int A[], int N)
      {
          int i, j;
          int *R = calloc(N, sizeof(int));
      
          do for (i = j = 0; i < N; i++) 
            if (A[i]) { R[j++]++; A[i]--; }
          while (j);
      
          for (j = N, i = 0; i < N; i++)
            A[i] = R[--j]; // A is now sorted ascending.
      
          free(R);
      }
      

      但是,它至少比qsort 慢 10 倍,而且数组元素越大,它就越差。我不建议使用它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-07-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-27
        相关资源
        最近更新 更多