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 回答