直接看例子:
var arr = [12, 23, 13, 35, 46, 67, 89, 97, 32];
for (var i = 0; i < arr.length - 1; i++) {
for (var j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
var z=arr[j];
arr[j]=arr[j+1];
arr[j+1]=z;
}
}
}
console.log(arr);
//(9) [12, 13, 23, 32, 35, 46, 67, 89, 97]
外层循环控制的是比较的趟数,一共是arr.length-1次;
内层循环控制的是比较的次数,每一次都将得出一个最大的数在右边,所以每次比较的次数应该减1,也就是arr.length-1-i;
每个数和它右边的那一个数比较,如果比它大,就要调换位置;最后右边将会得到最大的那个数;
例如:
a和b调换位置(=为赋值)
c=a;
a=b;
b=c;
从大到小或者从小到大排列,只需要改变<(小于号)或者>(大于号)即可;