将数组arr[i]、arr[j] 进行值交换javascript
function exchange (arr, i, j) { // 数组值交换
[arr[i], arr[j]] = [arr[j], arr[i]] // es6结构赋值语法
}
复制代码
function bubbleSort (arr) {
let list = [...arr]
let len = list.length
for (i=0; i<len - 1; i++) {
for (j=0; j<len - 1 - i; j++) { // 第一轮比较已将最大值放到了数组最后一位,因此每次循环都须要减去i
if (list[j] > list[j+1]) { // 前一位大于后一位交换位置
exchange(list, j, j+1)
}
}
}
return list
}
复制代码
冒泡排序,顾名思义,排序过程就像水下的气泡冒出过程同样,气泡上浮过程当中慢慢地变大;经过比较相邻两个数,若是左边大于右边,则相互调换位置,交换完后往前进一步,继续比较;将较大的数往右边放html
function insertionSort (arr) {
let list = [...arr]
let len = list.length
for (i=1; i<len; i++) { // 取数组第二位进行插入比较
for (j=i; j>0; j--) { // 从数组第二位开始,逐一跟前一位比较
if (list[j] < list[j-1]) { // 当前一位大于后一位,将调换位置,继续往前比较
exchange(list, j, j-1)
} else { // 当前一位小于后一位就中止本次的比较,进行下一位数的插入比较
break
}
}
}
return list
}
复制代码
插入排序,过程就很像玩扑克牌的摆牌动做,抽出一张牌(算法是抽出第二张开始比较),往左依次比较,若是比目标小的就插入其左边,直至排序完毕java
let arr = [2, 4, 6, 1, 9, 10, 20, 7, 9, 8]
console.log('要排序的数组:' + arr) // 要排序的数组:2,4,6,1,9,10,20,7,9,8
console.log('冒泡排序结果:' + bubbleSort(arr)) // 冒泡排序结果:1,2,4,6,7,8,9,9,10,20
console.log('插入排序结果:' + insertionSort(arr)) // 插入排序结果:1,2,4,6,7,8,9,9,10,20
复制代码
冒泡排序参考:https://www.runoob.com/w3cnote/bubble-sort.html
es6
插入排序参考:https://www.runoob.com/w3cnote/insertion-sort.html
算法