2017-11-19 3 views
-1

再帰メソッド(つまりループなし)を使用してバブルソートを書き換え、再帰ソートの実行前後に配列を出力するprint配列関数。配列は:[] = {19、62、45、9、4、99、82、34、59、102}希望の出力を得るためのループなしの再帰を使用したプログラムの作成

INTは、コマンドライン引数を読み出し、両者を処理する関数を書きますスイッチ: "-min"と "-max"。 "-min"を選択すると、配列はminからmaxにソートされます。 "-max"を選択すると、配列はmaxからminにソートされます。

rsort.exeというプログラムのリリース版を使用してWindowsのcmdプロンプトから出力を生成します。コマンドラインで引数が指定されていない場合は、次のようなヘルプメッセージを出力します。

使用法:c:> rsort.exe WHERE -min [min〜max]、または-max [max〜min

コメントのコード。

#include <stdio.h> 
#include <string.h> 
#include <stdlib.h> 

int main(void) 
{ 
    int ary[] = { 19, 62, 45, 9, 4, 99, 82, 34, 59, 102 }; 
    int find_max(int *array,int max,int i); 
    if (i>=0) 
    { 
     if (array[i]>array[max]) 
     { 
      find_min(array,i,i-1); 
     } 
     find_min(array,max,i-1); 
    } 
    return max; 
} 
+0

イム立ち往生し、私の出力は、このプログラムは、「C言語でそれができる – John

+0

を混乱さt。私は今度あなたのためにそれをしました。将来は自分でやってください。そして今コメントを整理してください。 Cタグは、C++ではなくCを必要としていると言います。 – John

+1

あなたはそれをフォーマットすることができます質問ではなく、コメントでコードを含める必要がありますおかげ++ではないCにする必要が私に –

答えて

0

は、私はちょうど作っ迅速かつずさんな再帰的なバブルソートを掲載します。 find_maxは昇順に並べ替えられます。降順ソートをしたい場合は、大きい方の代わりに低い方のvalにスイッチを入れるだけです。

find_maxが呼び出されるたびに、私はsposを印刷して、作業の様子をヒントします。

#include <stdio.h> 
#include <string.h> 
#include <stdlib.h> 


int find_max(int [], size_t, int, int); 

int main(void) 
{ 
    int ary[] = { 19, 62, 45, 9, 4, 99, 82, 34, 59, 102}; 

    find_max(ary, sizeof(ary)/sizeof(int), 0, 0); 

    for(int i=0; i<sizeof(ary)/sizeof(int); i++) 
    { 
     printf("%d \n", ary[i]); 
    } 
    return 0; 
} 

int find_max(int numbers[], size_t len, int spos, int recurs) 
{ 

    int temp_len = len - recurs; 

    if(numbers[spos]>numbers[spos+1]) 
    { 
     numbers[spos]^=numbers[spos+1]; 
     numbers[spos+1]^=numbers[spos]; 
     numbers[spos]^=numbers[spos+1]; 
    } 

    printf("%d position \n", spos); 

    if(recurs == (len-2)) 
    { 
     return 0; 
    } 

    if(spos == (temp_len-2)) 
    { 
     find_max(numbers, len, 0, recurs+1); 
    } 
    else 
    { 
     find_max(numbers, len, spos+1, recurs); 
    } 
} 
関連する問題