【逆战班】
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