数组以C排序

时间:2013-06-12 14:03:13

标签: c sorting recursion

只是好奇是否有更好的方法来排序数组,然后我在这里。我知道它最多只能排序64个元素:(

而且,如果有办法减少排序函数本身的BigO时间。也许,只是跳过'last_index'中的那些元素就可以了。

有什么想法吗?

void sort_array(unsigned short unsorted_array[] , 
                unsigned long long last_index , 
                unsigned char sort_depth , 
                unsigned char ary_len)
{
   int r, q, hold;
   r = q = hold = 0;

   for(r=0; r<ary_len;r++)
   { 
      if((hold <= unsorted_array[r]) & !(last_index & (1 <<r)))
      {
         hold = unsorted_array[r];
         q = r;
      }
      last_index |= (1 << q);

      printf("\n The value at index  [%d@%d]" , hold , q);
      puts("");
      if(--sort_depth != 0)
      {
         sort_array(unsorted_array, last_index , sort_depth , ary_len);
      }
   }//@djf This is screw-up and wont work. Please test before making changes.
}

void main(void) 
{
    int x, y;
    x = y = 0;

    unsigned short ary[10] = {123,2,23,3,5};

    sort_array(ary, x, 5, 5);
}

1 个答案:

答案 0 :(得分:6)

使用qsort()是一种更好的方法,因为:

  • 它已经编写,调试,测试和记录。
  • 适用于任何(合理的)数组长度。
  • 它是库代码,因此它是您应用程序中的单个函数调用。
  • 其他程序员会直接了解并信任它。