【逆战班】
1.冒泡排序
原理:依次比较相邻的两个值,如果后面的比前面的小,则将小的元素排到前面。依照这个规则进行多次并且递减的迭代,直到顺序正确。
实现代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
var arr = [5,4,3,2,1];
for(var j = 0 ; j <= (arr.length-1) -1 ; j++){
// 外层循环,循环执行排序操作,循环次数是数组单元个数-1
for (var i = 0; i <= arr.length-2 - j ; i++) {
// 内层循环,每次循环比较一个最大值
// 上一次比较出的数值,不参与下一次循环 -j
// 当次循环的最后一个单元,通过倒数第二个单元,参与比较不参与循环 -1
if (arr[i] > arr[i + 1]) {
//判断相邻两个数的大小,如果前面大则交换存储的数据
var middle = 0;
middle = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = middle;
}
}
}
console.log(arr);//控制台输出查看结果
</script>
</body>
</html>
运行结果:

2.选择排序
首先从原始数组中找到最小的元素,并把该元素放在数组的最前面,然后再从剩下的元素中寻找最小的元素,放在之前最小元素的后面,直到排序完毕。
实现代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
var arr = [5,4,3,2,1];
for(var j = 0 ; j <= arr.length-1; j++){
// 外层循环,实现排序循环次数,次数是单元个数 -1
// 先默认起始位置就是最小值位置,存储起始位置的索引,也就是 j
var min = j;
// 默认的最小值位置是当前循环的起始位置,是j
for(var i = j+1 ; i <= arr.length-1 ; i++){
// 比较,要从下一个位置开始,内层循环起始,是比较的起始位置+1开始循环
if(arr[min] > arr[i]){//判断当前数值与下一个数值大小,如果大于下一个数值,则min的值变为i
min = i;// 变量中,存储当前较小值的索引下标
}
}
if(min != j){
// 内层循环执行完毕,存储的索引下标如果不是起始的索引j,就交换 min中存储的索引下标对应的数值 和 j索引下标应的数值
var m = 0;
m = arr[j];
arr[j] = arr[min];
arr[min] = m;
}
}
console.log(arr);//控制台输出查看结果
</script>
</body>
</html>
运行结果:

3.数组去重
这里主要讲通过indexOf()方法对数组进行去重的操作。
思路:建立一个新的数组,将原始数值中的数值,向新的数组中写入,如果这个数值不存在于新的数组中,就执行写入,如果已经存在,就不写入。建立一个空数组,来存储原始数组中不重复的数据。
实现代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
var arr=[1,2,1,3,1,4,2,3,4]; //定义一个数组
var newarr=[]; //定义一个空数组用来存储原始数组中不重复的数据
for(var i=0;i<=arr.length-1;i++){
if(newarr.indexOf(arr[i])===-1){ //newarr.indexOf(arr[i]) 执行结果如果是 -1,证明在新数组中,没有这个原始数组的数据
newarr.push(arr[i]);//在newarr数组中添加arr[i]
}
}
console.log(newarr);//控制台输出查看结果
</script>
</body>
</html>
运行结果:

原文:https://www.cnblogs.com/icy-shower/p/12538896.html