2017-10-24 5 views
0

私はここで選択ソートを実装しようとしました。私はここで間違っているものを教えてくださいとソートC++選択ソートの実装が正しくありません。任意のアドバイス

#include <iostream> 

using namespace std; 

void selectionsort(int arr, int size) 
{ 
int temp = 0; 
int min = 0; 
int i, j, k; 

for (i = 0; i<size-1;i++) 
{ 
    min = arr[i]; 
    for(j = i+1; j<size; j++) 
    { 
     if(arr[j] < min) 
     { 
      temp = min; 
      min = arr[j]; 
      arr[j] = temp; 
     } 

     else if (arr[j] >= min) 
     { 
      continue; 
     } 
    } 
}  

for (k = 0; k <size; k++) 
{ 
    cout<<arr[k]; 
} 
} 

int main() 
{ 
int arr1[] = {5, 3, 4, 2, 1}; 
int size = sizeof(arr1)/sizeof(arr1[0]); 
selectionsort(arr1, size); 

return 0; 
} 

選択の実装に何か問題がある場合、私はここと選択ソートの実装に何か問題がある場合、間違っているものを教えてください。

+0

コメント化されているパラメータの型が 'int型* arr'あるべきなパラメータの種類を変更することを忘れないでください。 – songyuanyao

+0

'void selectionsort(int arr []、int size)' – dasblinkenlight

+2

もちろん、 'void selectsort(std :: vector arr)'があり、データとそのサイズを一箇所に整理して整理することができます。 – aschepler

答えて

0

コードスワップの主な問題は、選択ソートで意図したとおりに機能しません。 私は、2番目のループの外側でmin変数とswap値にインデックスを格納することをお勧めします。

min = i; 
    for (j = i + 1; j<size; j++) 
    { 
     if (arr[j] < arr[min]) 
     { 
      min = j; 
     } 
    } 
    temp = arr[min]; 
    arr[min] = arr[i]; 
    arr[i] = temp; 

そして、それはすでに

関連する問題