持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第2天,点击查看活动详情
选择排序
选择排序算是比较简单的一种,拿到第一个数n ,让他和数组的其他数x进行比较(因为每一次循环会出现一个最小值,前面的就没必要重复比较了),如果n>x,就把两数的位置互换,这样当数组完成循环,就会成为一个从大到小的序列
function chooseSort(arr) {
let replace = ""
for (let i = 0; i < arr.length; i++) {
for (let x = i + 1; x < arr.length; x++) {
if (arr[i] > arr[x]) {
replace = arr[i]
arr[i] = arr[x]
arr[x] = replace
}
}
}
return arr
}
函数chooseSort接收一个数组,定义replace变量用来当中间人,替换数组的值,第一次循环是对数组所有的数进行,从而达到排序。第二次是找出每一次循环的最小值,把他放在本次循环的下标
试一下
结果
冒泡排序
冒泡排序同样进行两次循环,每一次循环都会拿这个数n与n+1进行比较,如果n>n+1,那么这两个就交换位置,每个数都过一遍,就会排序完成
function bubbleSort(arr) {
let replace = ""
for (let i = 0; i < arr.length; i++) {
for (let x = 0; x < arr.length; x++) {
if (arr[x] > arr[x + 1]) {
replace = arr[x + 1]
arr[x + 1] = arr[x]
arr[x] = replace
}
}
}
return arr
}
尝试一下
结果
插入排序
插入排序是拿到一个数n,把他储存变量里,然后让他对他左边的数进行比较,如果大于那么就把他左边的数放到它自身的位置,最后再把他自身放到右边的位置,这样左边就永远是一个有序的序列,循环完成就得到排序后的序列
function sort(arr) {
for (let i = 1; i < arr.length; i++) {
index = i - 1
current = arr[i]
while (index >= 0 && arr[index] > current) {
arr[index + 1] = arr[index]
index--
}
arr[index + 1] = current
}
return arr
}
index记录比i小一位的数,用来比较i的值,current记录此时arr[i]的值,用于插入值
while循环,当index大于0(数组下标不能小于0),并且数组后一个值大于数组此时i的值,就会执行,把后一个值放到当前的位置,然后让index--,在进行while循环,一直到index<0或者后一个数小于前一个数结束
试一下
效果
结束
谢谢大家,如果喜欢点个赞,谢谢你