【Day21】[演算法]-排序Sort & 气泡排序法Bubble Sort

排序(Sorting)

排序(Sorting)在电脑领域中是非常普遍且重要工作,即是将一群不规格的资料按照某个规格来重新排列,让排序过的资料容易阅读、利於统计整理、和减少搜寻时间,假若资料只有10笔左右,还能以人工的方式排序,但若资料多到万笔以上就会相当困难,因此,排序演算法就变得相当重要。


气泡排序法(Bubble Sort)

气泡排序法(Bubble Sort)又称交换排序法,原理是从第一笔资料开始,逐一比较相邻两笔资料,如果两笔大小顺序有误则做交换,反之则不动,接者再进行下一笔资料比较,所有资料比较完第1回合後,可以确保最後一笔资料是正确的位置。

下面利用40 30 60 50 20由小到大排序。
https://ithelp.ithome.com.tw/upload/images/20211002/20121027K4gjOElSjD.jpg


n=5
第1回合比较了4次,n-1次
第2回合比较了3次,n-2次
第3回合比较了2次,n-3次
第4回合比较了1次,n-4次
总共比较了4回合,n-1回合

(n-1) + (n-2) + .... + 1 = n(n-1) / 2
平均时间复杂度为: O(n²)


JavaScript

let data = [8,6,1,10,5,3,9,2,7,4]

function BubbleSort(array){
  let len = array.length
  while (len > 1) {
    len--
    for (let i = 0; i < len; i++) {
      // 如果前面的元素比後面的元素要大,则交换元素位置
      if (array[i] > array[i + 1]) {
        [array[i], array[i + 1]] = [array[i + 1], array[i]];
      }
    }
  }
  return array
}
console.log(BubbleSort(data))//[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Python

#Bubble Sort
data = [89, 34, 23, 78, 67, 100, 66, 29, 79, 55, 78, 88, 92, 96, 96, 23]

def BubbleSort(data):
    n = len(data)
    while n > 1:
        n-=1
        for i in range(n):        
            if data[i] > data[i+1]:  
                data[i], data[i+1] = data[i+1], data[i]
    return data

print(BubbleSort(data))
#[23, 23, 29, 34, 55, 66, 67, 78, 78, 79, 88, 89, 92, 96, 96, 100]

<<:  Day20 vue.js椅毒供毒之整理code

>>:  Day 18 : PHP - 如何做出一个有CRUD功能的会员管理系统?

【MusesAI入门】DAY1.注册教学

身为管理者的您是否觉得已经建立详细作业程序,但产品品质却不符合预期? 工厂作业员每天一直在做动作重覆...

16 | WordPress 地图区块 Map Block

使用地图区块,可将地图嵌入网站上的任何文章或页面之内。 若要新增地图区块,请按一下区块插入工具图示。...

别让老旧机房阻碍您的绩效!2021年【企业机房论坛】5/7精彩登场

年度企业机房论坛将於5月7日召开。主办单位邀请EPI机房标准顾问、网路布线与散热技术专家,及思科、微...

Day 04 | 渲染元件

要渲染 Livewire 元件也非常简单,主要会分成两种常用的方法,以下会分别对照 官方文件 来做示...

DAY 25 Full Screen Modal - Follow Us

这个部分主要是 social media 的区块,会用到 fontawesome 上的 icon 们...