2017-11-25 4 views
-1
#include<stdio.h> 


void swap(int a[60],int p, int min){ 
    int temp; 
    if (min!=p){ 
    temp= a[p]; 
    a[p]=a[min]; 
    a[min]=temp; 
    } 
    return; 
} 

void selection(int a[60]){ 
    int p=0; 
    do { 
    int min = p; 
    for (int i=p+1;i<60;i++){ 
     if(a[min]>a[p])min=p; 

    } 
    swap(a,p,min); 
    p++; 
    } while(p<60); 
} 




int main(){ 
    int a[60]; 
    int p=0; 
    while(p<60){ 
     scanf("%d\n",&a[p]); 
     p++; 
    } 
    selection(a); 
    p=0; 
    while(p<60){ 
     printf("%d\n",a[p]); 
     p++; 
    } 

    return 0; 
} 
  1. をやっていません。
  2. アレイ
  3. 選択機能は、ループの別の配列に最低の要素を見つけ60回
  4. アレイを通過することができるように、変数pを定義をソート「べきである」と呼ばれている上記で定義された選択機能
  5. 見出さ、スワップ機能が最小に配列値とPポジション
  6. を交換した場合、ループは配列
  7. プリントアレイが
メイン関数で呼び出されるソートする60回実行

私は、選択ソートのために、このコードを書いたが、それは最初の関数は、標準入力からの60サイズの配列をスキャンし、メインには何も

for (int i=p+1;i<60;i++){ 
    if(a[min]>a[p])min=p; 
} 

あなたのループが小さいかを確認するためにa[p]a[min]を比較している:

+1

あなたの'の場合([分]> [P])分= P:それはあなたが小さい番号を見つけた場合と比較してのminを設定する必要がインデックスです。 'p'は変更されません。私はそうです。 –

+2

ようこそ。ツアーに参加して、どのような質問をし、どのようにするのかを学んでください。ここに質問はありません。 –

+0

ありがとう@MayankVerma。 –

答えて

0

は、ここで問題です。ループ内でpは変更されませんが、iはループしません。 ; `問題を引き起こしている

if(a[min]>a[i]) min=i; 
+0

ありがとう、どのような素朴な間違い:) –

関連する問題