有一个类似于此的冒泡排序例程。我需要通过在数组排序或数组已经排序时停止循环来提高效率。
function sortNumbers(listbox) {
var x, y, holder;
// The Bubble Sort method.
for(x = 0; x < ranarray.length; x++) {
for(y = 0; y < (ranarray.length-1); y++) {
if(ranarray[y] > ranarray[y+1]) {
holder = ranarray[y+1];
ranarray[y+1] = ranarray[y];
ranarray[y] = holder;
}
}
}
最佳答案
在进入内部循环之前,创建一个 bool 值来检查内部循环内部是否发生了交换。当没有交换时,数组被排序。
function sortNumbers(listbox) {
var x, y, holder;
// The Bubble Sort method.
for(x = 0; x < ranarray.length; x++) {
var swapOccured = false;
for(y = 0; y < (ranarray.length-1); y++) {
if(ranarray[y] > ranarray[y+1]) {
holder = ranarray[y+1];
ranarray[y+1] = ranarray[y];
ranarray[y] = holder;
swapOccured = true;
}
}
if (!swapOccured) break;
}
关于JavaScript BubbleSort,如何提高其效率?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2875341/