冒泡排序双层循环
举例:
3 6 5 7 1
第一趟排序:
第一次比较:3和6比较,3小于6,不交换位置: 3 6 5 7 1
第二次比较:6和5比较,6大于5,交换位置:3 5 6 7 1
第三次比较:6和7比较,6小于7,不交换位置: 3 5 6 7 1
第四次比较:7和1比较,7大于1,交换位置:3 5 6 1 7
第一趟总共进行了4次比较, 排序结果:3 5 6 1 7
第二趟排序:
第一次比较:3和5比较,3小于5,不交换位置:3 5 6 1 7
第二次比较:5和6比较,5小于6,不交换位置:3 5 6 1 7
第三次比较:6和1比较,6大于1,交换位置:3 5 1 6 7
第二趟总共进行了3次比较, 排序结果:3 5 1 6 7
第三趟排序:
第一次比较:3和5比较,3小于5,不交换位置:3 5 1 6 7
第二次比较:5和1比较,5大于1,交换位置:3 1 5 6 7
第三趟总共进行了2次比较, 排序结果:3 1 5 6 7
第四趟排序:
第一次比较:3和1比较,3大于1,交换位置:1 3 5 6 7
第四趟总共进行了1次比较, 排序结果:1 3 5 6 7
最终结果:1 3 5 6 7
N个数字要排序完成,总共进行N-1趟排序,每i趟的排序次数为(N-i)次,所以可以用双重循环语句,外层控制循环多少趟,内层控制每一趟的循环次数,实现如下
var arr = [3 ,6 , 5 , 7 ,1];
for (var i = 0; i < arr.length - 1; i++) {
for (var j = 0; j < arr.length - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
var temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
console.log(JSON.stringify(arr));
打印结果:
[10,20,30,40,50]