2

誰かがこのソートアルゴリズムを認識していますか? 私はjavascriptでコードを提供しました。このリンクで動作することがわかりますhttp://jsfiddle.net/EBC6T/6/

var unsortedArr=[4,3,2,1];

var swap=function(arr,i,j){
   var temp=arr[i];
   arr[i]=arr[j];
   arr[j]=temp;
};

var theUnknownSort=function(arr){
for(var i=0; i<arr.length; i++){
    for(var j=i+1; j<arr.length;j++){
        if(arr[i]>arr[j]){
        swap(arr,i,j);
        document.getElementById('test').innerHTML += "<li>"+arr+"</li>";
        }
    }
 }

};

theUnknownSort(unsortedArr);

並べ替えの順序:

3,4,2,1
2,4,3,1
1,4,3,2
1,3,4,2
1,2,4,3
1,2,3,4
4

1 に答える 1

2

内側のループが完了した後にインデックスを記憶して一度交換するのではなく、すぐにインデックスを交換するため、これは選択ソートの単純な形式です。

改善された形式は次のとおりです。

for(all i in array){
  for (all j==i+1 in array){
    compare i to all j, remember lowest number minj
  }
  swap(i,minj) if minj<i
}

それでも、それは恐ろしいパフォーマンスを持っていO(n²)ます。

于 2013-06-11T14:24:08.180 に答える