冒泡排序代码:
- var Array=[8,94,15,88,55,76,21,39];
- function sortarr(arr){
- for(i=0;i<arr.length-1;i++){
- for(j=0;j<arr.length-1-i;j++){
- if(arr[j]>arr[j+1]){
- var temp=arr[j];
- arr[j]=arr[j+1];
- arr[j+1]=temp;
- }
- }
- }
- return arr;
- }
- sortarr(Array);
- console.log(Array);
当 i=0 的时候, 里面的循环完整执行, 从 j=0 执行到 j=6, 这也就是第一遍排序, 结果是将最大的数排到了最后, 这一遍循环结束后的结果应该是 [7,10,85,50,43,65,39,90]
当 i=1 的时候, 里面的循环再次完整执行, 由于最大的数已经在最后了, 没有必要去比较数组的最后两项, 这也是 j<arr.length-1-i 的巧妙之处, 结果是 [7,10,50,43,65,39,85,90];
说到这里, 规律就清楚了, 每次将剩下数组里面最大的一个数排到最后面, 当第一个循环执行到最后的时候, 也就是 i=6, 此时, j=0, 只需要比较数组的第一和第二项, 比较完毕, 返回
来源: http://www.jianshu.com/p/e09fbccba41a