冒泡排序
首先需要明白思路,一个数组arr=[9,5,8,4,7,3,2],冒泡就是从数组第一个值开始与依次与之后的值比较,如果是从小到大排序,那么9先和5比较,9大就换与5交换位置,再和8比较还大,再和8交换位置,继续。。。直到2还大,那么9放在了数组的最后,下一次比较的数组变为arr=[5,8,4,7,3,2,9],这样再来一轮5和其他值比较形成arr=[4,8,3,7,2,5,9],这样继续循环直到完成从小到大排序,当然反过来也是一样的如果是从大到小,那么如果大就不换位置。
这样的话我们还需要知道怎么交换数组中两个值的位置,
就像给变量交换值一样简单,我们需要一个中间变量 比如变量a和变量b怎么交换值呢
var a=10
var b=5
var c=a
a=b
b=c
这样就完成了交换
接下来实现冒泡排序:
之前的文章讲过双重for循环,这里我们将要用到它
let arr = [9, 5, 8, 4, 7, 3, 2]
for (let i = 0; i < arr.length - 1; i++) {//外层循环控制跑几轮
for (let 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(arr)
颠倒数组
let arr = ['red', 'blue', 'yellow', 'white', 'black']
let newarr = []//声明一个新数组
for (let i = arr.length - 1; i >= 0; i--) {
//for循环中有三个表达式,第一个控制初始值,第二个是判断循环条件,第三个是执行操作
//现在初始i=数组长度减1,那么i=4,结束循环的条件是 i>=0,那么i每次--
//第一次循环 newarr[newarr.length] = arr[i] 相当于newarr[0] = arr[4]
//第二次循环 newarr[newarr.length] = arr[i] 相当于newarr[1] = arr[3] 因为newarr中已经放进去一个值了
newarr[newarr.length] = arr[i]
}
console.log(newarr)
数组筛选
var arr=[2,0,1,9,6,10,50,70,82,3]
var newarr=[]
//刚开始 newarr.lenght=0
for(let i=0;i<arr.length;i++){
if(arr[i]>=10){//筛选条件
//新数组索引号应该从0开始 依次递增
newarr[newarr.length]=arr[i]
}
}
console.log(newarr)