用javascript实现冒泡排序

思路:双重循环比较
1)从第一个数字开始扫描,并且比较第一个和第二个数字
1-1 如果第一个数字大于第二个数字,则交换位置
1-2 如果第一个数字小于第二个数字,则比较第二个和第三个数字,依次类推,直到最大的数字到最后一位,然后转回(1)。

比如:
5 4 3 2 1
经历过第一轮的bubble sort后应该是:
4 3 2 1 5

首先如果有N个数字,那我们只要进行N-1趟排序。
这个很好理解,如果只有2个数,那我们两个数对比一次就够了。同样的道理,如果有100000个数字,进行完第99999次后,最小的数字必然在第一个。

另外如果有N个数字,我们进行第一轮冒泡排序的时候,最大的数假设为A,已经处于最后一个,那我们接下来从第一个开始比较的时候,最后一个数字就没有必要再对比,我们设第几趟排序为C,所以第二次需要对比的数字个数就是:N-1-C。

接下来我们就可以编码了。这里为了方便就直接写了。

var bubbleSort=function(arr){
  //第一重循环,i表示排序多少趟
  for(var i=0;iarr[j+1]){
        var temp=arr[j];
        arr[j]=arr[j+1];
        arr[j+1]=temp;
      }
    }
  }
  return arr;
};
var array=[10,9,8,7,6,5,4,3,2,1,0];
console.log(bubbleSort(array));

最后一张渣图是让我备忘的,大家请忽略。


用javascript实现冒泡排序_第1张图片
i和j的关系.png

假设5个数字:
第0趟,第一个数字需要对比4次
第1趟,第一个数字需要对比3次
第2趟,第一个数字需要对比2次
第3趟,第一个数字需要对比1次
5个数字,总共需要4趟对比。
i和j的边界应该是:

i

你可能感兴趣的:(用javascript实现冒泡排序)