JavaScript语言描述
// 每次都是从0开始, 相邻的两两比较,然后交换
// 第一轮下来,把最大的冒泡到最后一位(从此最后一位就不用动它了)
// 第二轮下来,把次大的冒泡到倒数第二位
// arr[5,2,0]
function bubbleSort (arr) {
// 如果是2个数, 就只要比较一次就好了
let times = arr.length - 1
for (let i = 0; i < times; i++) {
// 0和1比, 然后1和2比, 然后2和3比
// 0和1比, 然后1和2比
// 0和1比
NSLog('开始外层循环 i:' + i)
for (let j = 0; j < times - i; j++) {
NSLog(' 开始内层循环 j:' + j + ' 相邻的数是:' + arr[j] + '----' + arr[j+1])
// 相邻两个比较
if(arr[j] > arr[j+1]){
NSLog(' 由于arr[j] > arr[j+1],所以交换')
let temp = arr[j]
arr[j] = arr[j+1]
arr[j+1] = temp
}
}
//
NSLog('第' + (i+1) + '轮排序后,数组: ' + arr)
}
}
// 一句话,通过相邻的数两两比较,把最大的数冒泡到最后面(想像一下水下气泡)
bubbleSort([5,2,0])
效果如下:
过程如下: