数组中的冒泡排序与选择排序算法介绍
程序员文章站
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