2016-04-18 1 views
0

選択ソート:選択ソートアルゴリズム

sorting algorithm

私は、ソートアルゴリズムの選択を作成しているが、誰かがその右のない選択ソート私に言いました。

そうでない場合、どのような並べ替えのタイプですか?それが選択ソートとどのように異なっているかを示します。

コード:

void selection_Sort(int arr[] , int size){ 
    int temp , length = size; 
    for(int i = 0; i < size ; i++){ 
     for(int j = i + 1; j < size ; j++){ 
      if(arr[i] > arr[j]){ 
       temp = arr[j]; 
       arr[j] = arr[i]; 
       arr[i] = temp; 
      } 
     } 
    } 
} 

私はそれを改善する方法を教えてください?

+0

選択ソートページ上のhttps://en.wikipedia.org/wiki/Selection_sort#Implementation。コードスニペットで合理的に説明されています。 – Spade

答えて

1

このコードをselection sortに変換するには、内部サイクルで最小要素のインデックスを見つけ、このインデックスの要素を内部サイクルの終了後にi番目の要素と交換する必要があります。

(あなたの現在のコードはN^2月2日スワップについて作り出すことができる一方で)だから、スワップの総数はNを超えていない

+0

私はその良いアルゴリズムではないと言うことができます – Xitas

+0

選択のソートや実装について教えてください? – MBo

+0

私の実装 – Xitas

0

あなたはバブルソートを実装しています。

選択ソートとは、内側のサイクルで最も低い(または最も大きな)要素を見つけて、その要素を選択の端にある左右に(ピクチャのように)切り替えることを意味します。

あり3と同様のソートalghoritmsがある - あなたは、彼らがここでどのように動作するかを見ることができ、選択ソートソート挿入し、バブルソート:http://i.imgur.com/fq0A8hx.gif

+0

バブルソートでは、arr [j]> arr [j + 1] 2要素を同時に比較します – Xitas

+0

はい私はあなたが正しいと思います – Xitas

0
 var Selectionsort = function (A) { 
      for (var i = 0; i < A.length; i++) { 
       var imin = i; 
        for (var j = i + 1; j <= A.length; j++) { 
         if (A[j] < A[imin]) 
          imin = j; 
        } 
        var tmp = A[i]; 
        A[i] = A[imin]; 
        A[imin] = tmp; 
      } 
      return A; 
     }; 
     var A = [10, 20, 30, 40, 50, 60, 70, 80]; 
     var Aftersorted = Selectionsort(A); 
     console.log(Aftersorted); 
0

あなたはこのようにそれを改善することができます。

void selectionSort(double array[], int size) { 
    int min; 
    double temp; 
    for (int step = 0; step < size-1; step++) { 
     min = step; 
     for (int i = step+1; i < size; i++) { 
      if (array [i] < array[min]) { 
       min = i; 
      } 
     } 
     temp = array[step]; 
     array [step] = array[min]; 
     array [min] = temp; 
    } 
関連する問題