h5二阶段day09

1.冒泡排序

<script> var arr1 = [9, 3, 6, 10, 2, 5, 11, 4, 1, 7] document.write('原始', arr1); //拿数组内的第一个元素跟后一个元素比较,如果大于后面的元素 //然后交换位置,一直到最后,一轮下来,最大值一定到最后 //这一轮不是最终的结果,需要好几轮才可以 //一轮比较好几次,需要好几轮 //一轮最多比较多少次 length-1次 //最多length-1轮 //需要嵌套循环,外面能控制几轮,里面控制,每一轮多少次 // var tmp=arr1[0]; // arr1[0]=arr[1]; // arr1[1]=tmp; // 第一轮的比较 for(var i=0;i<arr1.length-1;i++){ if(arr1[i]>arr1[i+1]){ var tmp=arr1[i]; arr1[i]=arr1[i+1]; arr1[i+1]=tmp; } } document.write('第一轮',arr1) 总结轮 for (var i = 0; i < arr1.length - 1; i++) { for (var j = 0; j < arr1.length - 1 - i; j++) { if (arr1[j] > arr1[j + 1]) { var tmp = arr1[j]; arr1[j] = arr1[j + 1]; arr1[j + 1] = tmp; } } } document.write('最后', arr1); //0 length-1 //1 length-1-1 少一次 //2 length-1-1-1 少两次 //3 length-1-1-1-1 少三次 </script>

2.选择排序

<script> var arr2=[11,8,3,17,5,6,9]; //第一轮 假设下标为0的数是最小的,用下标1和以后的数和下标0作比较,得出最小的数 var min=0; for(var i=1;i<arr2.length;i++){ if(arr2[i]<arr2[min]){ min=i } } //将最小的数和第一个数交换 console.log(min) var temp=arr2[min] arr2[min]=arr2[0] arr2[0]=temp; document.write(arr2) //3,11,8,17,5,6,9 //第二轮 忽略第一个数字,假设下标为1的是最小的,用第二个和以后的跟下标1作比较,得出第二小的数 var min=1; for(var i=2;i<=arr2.length;i++){ if(arr2[i]<arr2[min]){ min=i } } console.log(min); var temp=arr2[min] arr2[min]=arr2[1] arr2[1]=temp; document.write(arr2); //3,5,8,17,11,6,9 //第三轮 忽略第一个第二个数字,假设下标为2的是最小的,用第三个和以后的跟下标2作比较,得出第三小的数 var min=2; for(i=3;i<arr2.length;i++){ if(arr2[i]<arr2[min]){ min=i } } console.log(min) //用第三小的数和第三个数组(下标为2)交换 var temp=arr2[min] arr2[min]=arr2[2] arr2[2]=temp document.write('第三轮',arr2); //3,5,6,17,11,8,9 var min=3; for(i=4;i<arr2.length;i++){ if(arr2[i]<arr2[min]){ min=i } } console.log(min) //用第四小的数和第四个数组(下标为3)交换 var temp=arr2[min] arr2[min]=arr2[3] arr2[3]=temp document.write('第四轮',arr2); //第五轮 var min=4; for(i=5;i<arr2.length;i++){ if(arr2[i]<arr2[min]){ min=i; } } var temp=arr2[min] arr2[min]=arr2[4] arr2[4]=temp document.write('第五轮',arr2) // i 第几轮 假设最小的索引是 循环开始的位置到最后一个 //j=0 1 0 1 //j=1 2 1 2 //j=2 3 2 3 //j=3 4 3 4 //总结 for(var j=0;j<arr2.length-1;j++){ var min=j; for(var i=j+1;i<arr2.length;i++){ if(arr2[i]<arr2[min]){ min=i } } var temp=arr2[min]; arr2[min]=arr2[j]; arr2[j]=temp; } document.write('最后',arr2)

3.数组的塌陷

把数组删空 ,因为前一个数据删除以后后一个数据会补上这个位置 ,i是一致向前走这就是数组塌陷

①解决方法

for(var i=0;i<arr1.length;i++){ arr1.splice(i,1); i--;//每次都是删除下标0 } console.log(arr1);

②解决方法

for(var i=arr1.length-1;i>=0;i--){ arr1.splice(i,1); } console.log(arr1);

4.数组的去重 四种方法

var arr1 = [9,9, 3,1,9, 6, 10, 2, 5, 11, 4, 1, 7]; //方法一 // var arr=[]; // for(i=0;i<arr1.length;i++){ // if(arr.indexOf(arr1[i])==-1){ // arr.push(arr1[i]) // } // } // console.log(arr);//就是去重以后的 //方法二,先排序,拿当前元素跟后一个比较,如果两个相同干掉一个 // arr1.sort(function(a,b){return a-b}) // for(i=0;i<arr1.length;i++){ // if(arr1[i]==arr1[i+1]){ // arr1.splice(i,1); // i--; // } // } // console.log(arr1) //方法三直接遍历 //如果第一个后面,有跟第一个一样的,那么就删除 // for(i=0;i<arr1.length;i++){ // var index=arr1.indexOf(arr1[i],i+1); // if(index!==-1){ // arr1.splice(index,1); // i-- // } // } // console.log(arr1) //方法四 集合数据结构 //集合天生不接受重复数据,集合中的数据一定是唯一的 //数组->集合->数组 //new Set([数据1,数据2,数据3,...数据n]) //集合->数组 //1.Array.from(集合) //2. [...集合] 相当于把集合的数据展开 三个点 // var res=Array.from(new Set(arr1)); // document.write(res); // var res=[...new Set(arr1)]; // document.write(res); //...用来展开数据 document.write([...arr1])

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值