基础排序算法
冒泡排序
冒泡排序的基本思想,就是相邻两个数字进行比较,如果它们顺序错误,就进行交换。什么是顺序错误呢?如果从大到小排列,小的在前面,大的在后面,就是顺序错误。现在对5个数12, 35, 99, 8, 100进行降序排列。
首先比较第1个和第2个(12和35),由于是降序排列,小的在后面,大的在前面,但12比35小,却排在了前面,顺序错误,需要交换。交换后变成了 35, 12, 99, 8, 100。再比较第2个和第3个(12和99),12 还是比99小,但排在前面,需要交换位置,交换后为35, 99, 12, 8, 100。再比较第3个数和第4个数(12和8),12大于8,顺序正确,不用交换。最后第4个和第5个(8 和100),调换它们的位置 35, 99, 12, 100, 8。经过4次比较,把最小的数字8找出来了,放到了正确的位置。
继续比较前四个数,第1个和第2个(35和99),由于35 < 99,顺序不对,进行交换,99, 35, 12, 100, 8。比较第2个和第3个(35和12), 顺序正确,不用交换。第3个和第4个(12和100),需要交换它们的位置 99, 35, 100, 12, 8; 经过3个比较,找出第二小的数,放到倒数第二个位置(正确的位置)。
继续比较前三个,比较第1个和第2个(99和35),顺序正确,不需要交换位置。再比较第2个和第3个( 35和100), 需要交换它们的位置 99, 100, 35, 12, 8。经过2次比较,找出了第3小的数,35。
最后就剩前两个,比较 99和100,交换它们的位置,100, 99, 35, 12, 8。比较1次,完成任务。
最终排序完成,100, 99, 35, 12, 8。
每一次大的比较,都找到了一个小数,放到正确的位置。每一次,也称一趟。第一趟执行了n-1次,第二趟执行了n-2次,第三趟n-3,第四趟n-4,结束。4正好n-1.
function bubbleSort (arr) { let newArray = arr.slice(); // 函数式编程的思想,不要对外部的变量进行改变。 let n = newArray.length; for(let i = 0; i< n -1; i++) { for(let j =0; j< n - i; j++) {// 每一趟内部进行两两比较,而比较的次数就是 n -i // 如果顺序错误,就交换它们的位置 if(newArray[j] < newArray[j + 1]) { let temp = newArray[j]; newArray[j] = newArray[j+1]; newArray[j+1] = temp; } } } return newArray; }
把 我们上面排序的5个数放入数组中,然后传入到bubbleSort 函数中
let array = [12, 35, 99, 8, 100]; console.log("排序前的数组:" + array); console.log("排序后的数组:" +bubbleSort(array));

浙公网安备 33010602011771号