400-650-7353
您所在的位置:首页 > IT干货资料 > web前端 > 【Web前端基础知识】冒泡排序和选择排序

【Web前端基础知识】冒泡排序和选择排序

  • 发布: 优就业it培训
  • 来源:优就业
  • 2021-06-18 17:25:08
  • 阅读()
  • 分享
  • 手机端入口

冒泡排序和数组排序是比较常见的数组排序算法

1.冒泡排序算法:

冒泡排序法是最基本的排序法之一,冒泡排序法的核心思想就是通过循环遍历元素,每次比较的是相邻两项的数,并根据其比较大小的结果调整这两项位置,一次循环之后可以得到当前循环的较大值。经过一轮循环并不能对该数组排序完成,所以我们的数组有多长就要有多少次循环,要在外进行嵌套一次for循环,但这个外循环只是用来控制比较次数的,没有参与实际的比较。

冒泡排序就是让大数上浮,小数下沉,形式就像深海里的泡泡,也因此称之为是冒泡排序。

例如我们有如下数组,使用冒泡排序算法的代码为:

  1. var arr = [10,5,3,7,9,4,2,8,6]; 
  2.  
  3.         // 外循环只是控制循环的次数,没有参与实际意义上的比较 
  4.         for(var i = 0; i<arr.length; i++){ 
  5.             // 每次比较相邻的两项 一轮循环 
  6.             for(var j = 0; j<arr.length; j++){ 
  7.                 // 作比较 
  8.                 if(arr[j] > arr[j+1]){ 
  9.                     // 交换位置 
  10.                     var temp = arr[j]; 
  11.                     arr[j] = arr[j+1]; 
  12.                     arr[j+1] = temp; 
  13.                 } 
  14.             } 
  15.         } 

打印结果为:console.log(arr);//[2, 3, 4, 5, 6, 7, 8, 9, 10]

冒泡排序的整体代码已经实现,实际上我们可以对其做一些优化,在内循环的比较时,每一轮循环结束之后,我们都会得到一个较大的值,放在最后边,那么在下次循环进行比较时已经没有和后面的值作比较的意义了,因为也比不过,也不会进行交换位置。因此可以在内循环的结束条件上进行一个优化,让j<arr.length-i;

  1. // 外循环只是控制循环的次数,没有参与实际意义上的比较 
  2.         for(var i = 0; i<arr.length; i++){ 
  3.             // 每次比较相邻的两项 一轮循环 
  4.             for(var j = 0; j<arr.length-i; j++){ 
  5.                 // 作比较(升序排列) 
  6.                 if(arr[j] > arr[j+1]){ 
  7.                     // 交换位置 
  8.                     var temp = arr[j]; 
  9.                     arr[j] = arr[j+1]; 
  10.                     arr[j+1] = temp; 
  11.                 } 
  12.             } 
  13.             // 一轮循环结束后,得到本轮循环的最大值,放在最后 

2. 选择排序的思想是选择第一项,后后面的所有项作比较,比后面的一项大,交换位置,之后选择第二项,后后面的所有项作比较,比后面的一项大(升序排列),交换位置...,以此类推。

也就是从第一项开始,选择该项和后面的所有项进行比较,后面的所有项也需要依次循环,所以在原本的for循环中需要在嵌套一个for循环,在内循环中我们的初始条件为被选中作为比较元素的后一位,即i+1;

例如我们有如下数组,使用选择排序算法的代码为:

  1. var arr = [10,5,3,7,9,4,2,8,6]; 
  2.         // 外循环控制作为比较的项 
  3.         for(var i = 0; i<arr.length; i++){ 
  4.             // 内循环依次和后面的项作比较 
  5.             for(var j = i+1; j<arr.length; j++){ 
  6.                 // 作比较(升序排列) 
  7.                 if(arr[i] > arr[j]){ 
  8.                     // 交换位置 
  9.                     var temp = arr[i]; 
  10.                     arr[i] = arr[j]; 
  11.                     arr[j] = temp; 
  12.                 } 
  13.             } 
  14.         } 

打印结果为: console.log(arr);//[2, 3, 4, 5, 6, 7, 8, 9, 10

文章“【Web前端基础知识】冒泡排序和选择排序”已帮助

更多内容

>>本文地址:https://www.ujiuye.com/zhuanye/2021/69057.html

THE END  

声明:本站稿件版权均属中公教育优就业所有,未经许可不得擅自转载。

1 您的年龄

2 您的学历

3 您更想做哪个方向的工作?

获取测试结果
  • 大前端大前端
  • 大数据大数据
  • 互联网营销互联网营销
  • JavaJava
  • Linux云计算Linux
  • Python+人工智能Python
  • 嵌入式物联网嵌入式
  • 全域电商运营全域电商运营
  • 软件测试软件测试
  • 室内设计室内设计
  • 平面设计平面设计
  • 电商设计电商设计
  • 网页设计网页设计
  • 全链路UI/UE设计UI设计
  • VR/AR游戏开发VR/AR
  • 网络安全网络安全
  • 新媒体与短视频运营新媒体
  • 直播带货直播带货
  • 智能机器人软件开发智能机器人
 

快速通道fast track

近期开班时间TIME