0

配列をソートするより良い方法があるかどうか、私がここに持っているものよりも興味があります。私はそれが64要素までしかソートできないことを知っています:(

そして、sort関数自体の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);
}
4

1 に答える 1

6

次の理由から、を使用qsort()する方が良い方法です。

  • すでに作成、デバッグ、テスト、文書化されています。
  • 任意の(合理的な)配列の長さで機能します。
  • これはライブラリ コードなので、アプリケーション内での単一の関数呼び出しです。
  • 他のプログラマーはそれを直接知り、信頼します。
于 2013-06-12T14:10:48.063 に答える