有一个类似于此的冒泡排序例程。我需要通过在数组排序或数组已经排序时停止循环来提高效率。

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/

10-10 05:27