欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-03-10 16:21:49
冒泡排序示意图 冒泡排序程序 1 var arr = [4,2,5,7,8,2,1] 2 console.log(arr) 3 // 用冒泡排序从小到大 4 // 总共有arr.length个数,每一趟都能确定一个最大值,但是最后一个不需要比较 5 // 所以总共要比较arr.length-1趟 0 ......

冒泡排序示意图

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

冒泡排序程序

 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