前端算法手动实现数字排序

一、冒泡排序

时间复杂度:O(n2)
代码:

 1 var arr = [0, 1, 2, 6, 7, 10, 3]
 2 // 冒泡排序
 3 function bubbleSort(arr) {
 4     for (let i = 0; i < arr.length - 1; i++) { // 控制循环次数
 5         let isDone = true
 6         for (let j = 0; j < arr.length - i - 1; j++) { // 无序区域的循环次数
 7             if (arr[j] > arr[j + 1]) {
 8                 isDone = false
 9                 let temp = arr[j]
10                 arr[j] = arr[j + 1]
11                 arr[j + 1] = temp
12             }
13         }
14         if (isDone === true) {
15              // 优化冒泡排序,当中途已排好序时,不再继续尝试排序
16             return arr
17         }
18     }
19 }
20 bubbleSort(arr)

冒泡排序动态图演示:

 

 

二、选择排序

时间复杂度:O(n2)

代码:

 

 1 // 选择排序
 2 let arr = [3, 2, 5, 3, 6, 1, 8, 0]
 3 
 4 function selectSort(arr) {
 5     for (let i = 0; i < arr.length - 1; i++) { // 遍历次数
 6         let minIndex = i // 假设起始索引对应的数值为最小
 7         let temp
 8         for (let j = i; j < arr.length; j++) { // 无序区域区域遍历次数
 9             if (arr[minIndex] > arr[j + 1]) {
10                 minIndex = j + 1 // 选出无序区域最小的索引
11             }
12         }
13         temp = arr[minIndex] // 存储最小的索引,并在下方进行交换
14         arr[minIndex] = arr[i]
15         arr[i] = temp
16     }
17     return arr
18 }
19 selectSort(arr)

 

选择排序动态图演示:

 

 

十大经典排序算法的图文演示
  这里极力推荐一位大佬写的一篇博客:https://www.cnblogs.com/onepixel/p/7674659.html

posted on 2020-09-16 15:44  blucesun  阅读(448)  评论(0编辑  收藏  举报

导航