2017-02-04 7 views
-1

これはスタックオーバーフローに関する私の最初の質問です。私はCS50を通してプログラミングの世界で私の旅を始めました。 Cの挿入ソート用の私のコードは、インストラクターの擬似コードが示唆したものとは少し異なります。私はちょうど次のコードが正しいと私はそれをより良くすることができますかどうかを知りたいですか?どうもありがとう。私の実装は正しく実装されていますか?

int arr[6] = {23, 42, 4, 16, 8, 15}; 

for (int i = 1; i < 6; i++)   // Iterating over the unsorted portion of array. 
{ 
    int element = arr[i];   // This is the first element of the unsorted portion. 
    int temp = -1; 
    for(int j = i-1; j >= 0 && element < arr[j]; j--) // Iterating over the unsorted portion of array from right to left. 
    { 
     arr[j+1] = arr[j]; 
     temp = j; 
    } 

    if(temp != -1)     // If temp does not change, the element is already sorted. 
    { 
     arr[temp] = element; 
    } 
} 
+0

@JonathanLeffler大変ありがとうございました。 – PseudoAficionado

答えて

2

おめでとうございます、あなたのコードは動作します。

これを見るための最初の方法は、このコードをmain()のような関数に置き、アルゴリズムを実行した後にすべての要素を順に出力することです。結果が期待通りでない場合は、確かに動作していませんが、逆のことは当てはまりません。しかし、最初の試行に合格すれば、他のケース、特にコーナーケースに対してコードのテストを開始する必要があります。

ここで役立つもう1つのオプションは、コードが取るすべてのステップで配列全体を表示できるデバッガです。特に、実際には気に入っているCS50 IDEに実装されています。

また、HackerRankのchallengesinsertion sort)については、これを学ぶのに役立つかもしれません。それ以外は、あなたのコースで幸運を楽しんでください!

+0

ありがとうございました!間違いなくそれをチェックします。そして、ええ、デバッガは甘いです! – PseudoAficionado

関連する問題