2016-04-26 21 views
-1

10個の異なる変数が10進数であり、それらを最低から最高まで並べ替える必要があるとします。私はさまざまなプログラミング言語を使ってさまざまな分類アルゴリズムを理解していますが、この場合、いくつかの特別な構造を入力できるエンドユーザーアプリケーションでアルゴリズムを構築する必要があります。 "for"、 "while" 、 "if"は配列とは関係ありません。つまり、aが配列の場合はa [i]のようなものは扱えません。誰か私に手がかりを与えることができますか?どうもありがとう!配列なしで並べ替える

+0

問題は不明です。まず、 'a'で書くことができない場合、あなたはインプレースソートを行うことができません。あなたはそれをコピーしてソートし、その配列を返すことができます。または入力が与えられたときに最小/最大の要素を見つけなければならない場合は、 'heap'を使用してください。 – vish4071

+0

配列をサポートしない言語でソートしようとしていますか? –

+1

これはあなたの問題を解決します。http://stackoverflow.com/questions/25070577/sort-4-numbers-without-arrayあなたの番号で4を伸ばしてください。 –

答えて

1

このような意味ですか?

C++コード:

void sort_4(int *a1, int *a2, int *a3, int *a4) 
{ 
    if (a1 == NULL) return; 
    if (a2 == NULL) return; 
    if (*a2 < *a1) swap(*a1, *a2); 
    sort_5(a1, NULL, NULL, NULL); 
    if (a3 == NULL) return; 
    if (*a2 < *a3) swap(*a2, *a3); 
    sort_5(a1, a2, NULL, NULL); 
    if (a4 == NULL) return; 
    if (*a4 < *a3) swap(*a3, *a4); 
    sort_5(a1, a2, a3, NULL); 
} 

あなたがコピー&ペーストしたり、コード生成スクリプトで10個の要素にそれを拡張することができます。

+0

@Ke Yangに感謝しますが、この場合はメソッドを呼び出すことはできませんが、再帰的な方法はありません。 – chufabit

+0

ソートを実装するために大量のコードを使用する必要があるかもしれません。例えば、バブルソートを用いて10個の要素を比較すると、約50倍である。コードを生成するスクリプトを書くことができます。 –

0

まあ、バブルソートをハードコードすることができます。たとえば、あなたが10個の変数、a, b, c, d, e, f, g, h, i, j持って想像:

for (int x = 0; x < 9; ++x) 
{ 
    if (a > b) swap(a,b); 
    if (b > c) swap(b,c); 
    if (c > d) swap(c,d); 
    if (d > e) swap(d,e); 
    if (e > f) swap(e,f); 
    if (f > g) swap(f,g); 
    if (g > h) swap(g,h); 
    if (h > i) swap(h,i); 
    if (i > j) swap(i,j); 
} 

ひどく効率的ではないのですが、あなたはわずか10かそこらのアイテムを持っているUIアプリケーション内の非効率性を気づかするつもりはありません。

if (x < 9) 
    { 
     if (a > b) swap(a,b); 
     if (x < 8) 
     { 
      if (b > c) swap(b,c); 
      if (x < 7) 
      { 
       .... 

をしかし、それは、再び、それはあなたがそのような小さなリストについて気づいたことはありません与え、小さな効率化を急いで扱いにくくなると:あなたは、条件文を入れ子にすることによって、それは少しより効率的に行うことができます。