当前位置: 移动技术网 > IT编程>开发语言>JavaScript > 数组中的冒泡排序与选择排序算法介绍

数组中的冒泡排序与选择排序算法介绍

2020年04月12日  | 移动技术网IT编程  | 我要评论

冒泡排序示意图

冒泡排序程序

 1     var arr = [4,2,5,7,8,2,1]
 2     console.log(arr)
 3     // 用冒泡排序从小到大
 4     // 总共有arr.length个数,每一趟都能确定一个最大值,但是最后一个不需要比较
 5     // 所以总共要比较arr.length-1趟  0 ~ length-2
 6     // 5  4 0~3
 7     for (var i = 0; i < arr.length - 1; i++) {
 8       // 当前第i趟要比较的次数
 9       // arr.length   i    比较次数
10       //    5         0       4
11       //    5         1       3
12       //    5         2       2
13       // arr.length   i    arr.length - i - 1
14       for (var j = 0; j < arr.length - i - 1; j++) {
15         // 相邻的两个数来比较 arr[j]和arr[j+1]
16         if (arr[j] > arr[j+1]) {
17           // 交换
18           var temp = arr[j]
19           arr[j] = arr[j+1]
20           arr[j+1] = temp
21         }
22       }
23     }
24     console.log(arr)

选择排序示意图

选择排序程序

 1     // 每一趟循环能确定当前的最小值,总的循环趟数arr.length-1
 2     for (var i = 0; i < arr.length - 1; i++) {
 3       // 先假设当前最小值的索引为i
 4       var min = i
 5       // 用假设的最小值跟后面的值一一比较
 6       // 如果遇到后面的值比假设的最小值还要小,说明假设错误
 7       // 最小值的索引应该重新赋值为后面小值的索引
 8       // 一趟结束以后就可以得到最小索引,这个时候再交换
 9 
10       // 内层循环从i+1开始,每一趟都要比较到最后一个,所以到arr.length-1结束
11       for (var j = i + 1; j < arr.length; j++) {
12         // 判断arr[min]是否大于arr[j],如果大于了,说明arr[j]才是最小值
13         // min就应该重新赋值为j
14         if (arr[min] > arr[j]) {
15           min = j
16         }
17       }
18       // 内层循环结束以后,当前这一趟的最小值就被找到了
19       // 让arr[i]和arr[min]交换
20       // 如果i和min相等,那么就没有交换的必要了
21       if (i != min) {
22         var temp = arr[i]
23         arr[i] = arr[min]
24         arr[min] = temp
25       }
26     }

 其实这两种是最基本的排序算法,也是程序开发的经典算法,很多刚接触开发的同学首先就会接触到,共同学习勉励。

转自:https://www.cnblogs.com/strongerPian/p/12683255.html

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网