精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

比冒泡算法還簡單的排序算法:看起來滿是bug的程序,居然是對的

新聞 前端 算法
程序bug也能負負得正嗎?比如程序員們再熟悉不過的排序算法,通過兩個“bug”居然能歪打正著,實在令人匪夷所思。

 本文經AI新媒體量子位(公眾號ID:QbitAI)授權轉載,轉載請聯系出處。

[[427437]]

程序bug也能負負得正嗎?

還真可以。

比冒泡算法還簡單的排序算法:看起來滿是bug的程序,居然是對的

比如程序員們再熟悉不過的排序算法,通過兩個“bug”居然能歪打正著,實在令人匪夷所思。

請看這位程序員寫的數組升序排序代碼:

  1. for i = 1 to n do 
  2. for j = 1 to n do 
  3. if A[i] < A[j] then 
  4. swap A[i] and A[j] 

今天這串代碼在Hacker News論壇上突然火了起來,引來大批程序員圍觀。

比冒泡算法還簡單的排序算法:看起來滿是bug的程序,居然是對的

乍一看這段代碼,你的反應會是什么?會不會覺得這個程序員水平太差了,連基本的冒泡算法都寫不好:

不等號方向錯了,第二層循環指數j的范圍也弄錯了。

總之,這段代碼“絕對不可能正確”。

比冒泡算法還簡單的排序算法:看起來滿是bug的程序,居然是對的

△冒泡算法

但如果你真的運行一下會發現,結果還真的是按照升序排列的。

我們再來看一下正確的冒泡算法代碼是怎樣的:

  1. for i = 1 to n do 
  2. for j = i + 1 to n do 
  3. if A[i] > A[j] then 
  4. swap A[i] and A[j] 

后者不同之處是j = i + 1且A[i] > A[j] ,兩段程序大相徑庭。

然而我要告訴你一個不可思議的事實,其實第一串代碼是對的,而且可以嚴格證明。

那么它是如何實現正確排序的?

為何能歪打正著

仔細一想,其實很容易理解。因為該算法比冒泡排序多一半交換操作,正好可以將降序編程升序。

不過,作者還是給出了嚴格的證明。

我們定義Pᵢ是經過i次(1 ≤ i ≤ n)外循環后得到的數組。

如果算法正確,那么前i項已經是升序排列,即A[1] ≤ A[2] ≤ . . . ≤ A[i]。

證明該算法正確,實際上就是證明Pₙ對于任何n都成立。

根據數學歸納法,我們只要證明P₁成立,假設Pᵢ成立,接著再證明Pi+1也成立,命題即可得證。

P₁顯然是正確的,而且這一步和普通的冒泡算法降序沒有區別,經過第1次外循環,A[1]就是整個數組的最大元素。

接著我們假設Pᵢ成立,然后證明Pi+1成立。

我們先定義一個序數k:

首先假設A[k](k介于1~i之間)滿足A[k]>A[i+1]最小的一個數,那么A[k−1]≤A[i+1](k≠1)。

如果A[i+1]≥A[i],那么這樣的k不存在,我們就令k=i+1。

考慮以下三種情況:

1、1 ≤ j ≤ k−1

由于A[i+1]>A[j],沒有任何元素交換發生。

2、 k ≤ j ≤ i (如果k=i+1,則不存在此步驟)

由于A[j]>A[i+1],所以每次比較后都會有元素交換發生。

我們使用A[ ]和A′[ ]來表示交換前和交換后的元素,所以

A′[i+1] = A[k],A′[k]=A[i+1]

經過一系列交換,最大元素最終被放到了A[i+1] 位置上,原來的A[i+1]變成了最大元素,A[k]被插入了大小介于原來A[k]和A[k-1]之間的元素。

3、i+1 ≤ j ≤ n

由于最大元素已經交換到前i+1個元素中,此過程也沒有任何元素交換。

最后,Pₙ就是升序排序算法執行完以后的結果。

由于內外兩組循環沒有任何范圍差別,因此這可以說是“最簡單”的排序算法了。

從代碼上來看,它很像冒泡算法,但從證明過程中可以看出,這實際上是一種插入算法

比冒泡算法還簡單的排序算法:看起來滿是bug的程序,居然是對的

△插入算法

算法復雜度

顯然,該算法總會進行次比較,接下來計算算法的交換次數。

可以證明交換其次最多為I+2(n-1),最少為n-1。

其中I為初始數字的逆序數,最大為n(n-1)/2

因此整個算法的復雜度為O(n²)

從證明過程中可以看出,除了i=1的循環以外,其余循環里j=i-1之后的部分完全無效,因此可以將這部分省略,得到簡化后的算法。

  1. for i = 2 to n do 
  2. for j = 1 to i − 1 do 
  3. if A[i] < A[j] then 
  4. swap A[i] and A[j] 

該算法減少了比較和交換次數,不過算法復雜度依然是O(n²)。

網友:這個算法我以前見過

比最容易理解的冒泡算法還要簡單,這個排序算法在Hacker News上很快引起了網友的圍觀。

不少人覺得它“很眼熟”。

有位網友表示,自己曾在奧林匹克數學競賽中看到一個同學用了一種非常奇怪的排序算法,它可以運行但是效率很低,更像是一種插入排序。

如果我沒記錯的話,他用的就是這種算法。

比冒泡算法還簡單的排序算法:看起來滿是bug的程序,居然是對的

事實上,關于這種算法的討論已久,從2014年開始就不斷有人發帖,這次作者將論文上傳到arXiv后又引起了廣泛熱議。

比冒泡算法還簡單的排序算法:看起來滿是bug的程序,居然是對的

甚至還有烏龍事件發生。

有位網友掃了一眼論文就以為這個算法和自己10年前提出的一樣。

留言網友的算法:

比冒泡算法還簡單的排序算法:看起來滿是bug的程序,居然是對的

乍一看兩種算法的代碼確實很像,原理上的確有些相似。

都是看起來像冒泡排序,但其實更貼近選擇排序。

不過很快有人指出真相:這種算法中 j=i+1 to n,并且是當 A[i] > A[j] 時交換。

而作者提出的算法中 j=1 to n,A[i] < A[j] 時交換。

兩種算法相比,網友此前提出的更容易被理解為什么可以運行。

比冒泡算法還簡單的排序算法:看起來滿是bug的程序,居然是對的

當然也有歪樓的,有人就調侃自己剛學編程時寫過這個算法。

我百分百確定,在我剛開始學編程、并想要找到最短的排序方法時就寫過它。

比冒泡算法還簡單的排序算法:看起來滿是bug的程序,居然是對的
[[427441]]

不過說到實際應用上,這種算法需要的計算時間太長了。

有人就認為,這種算法此前被發現過很多次,但是那些人根本沒打算用它。

比冒泡算法還簡單的排序算法:看起來滿是bug的程序,居然是對的

也有人提出:這種排序沒有睡眠排序簡單。

比冒泡算法還簡單的排序算法:看起來滿是bug的程序,居然是對的

睡眠排序就是構造n個線程,讓線程和排序的n個數對應。

例如對于[4,2,3,5,9]這樣一組數字,就創建5個線程,每個線程睡眠4s,2s,3s,5s,9s。這些線程睡醒之后,就把自己對應的數報出來即可。這樣等所有線程都醒來,排序就結束了。

但和作者提出的算法一樣,睡眠排序由于多線程的問題,在真正實現上也有困難

此外,這位網友也表示自己看到過這種算法:

我確定我此前看到過這種算法,它沒有名字嗎?

很快就有人提議說——

如果它沒有名字的話,我建議稱之為“面試排序”。

比冒泡算法還簡單的排序算法:看起來滿是bug的程序,居然是對的
 

 

 

責任編輯:張燕妮 來源: 量子位
相關推薦

2021-02-02 13:23:47

Python語言線程

2023-08-29 08:01:39

2014-11-07 10:26:05

2020-06-29 15:00:31

UbuntumacOSLinux

2025-07-07 13:45:47

AI圖像模型

2024-05-20 08:45:46

2021-01-22 09:11:34

Python多線程CPU

2019-08-09 10:15:07

程序員項目研發

2013-12-30 10:06:51

智能硬件3D打印互聯網化

2016-08-01 11:33:40

云遷移云安全合規性

2021-10-02 10:36:00

YAML編程語言軟件開發

2021-09-29 00:19:10

容器集群k8s

2022-02-28 12:57:09

GNOMEPlasma桌面

2024-03-08 12:20:25

Python代碼

2021-08-02 15:06:46

vim服務Java

2022-03-30 14:23:48

LibreOfficOffice開源

2022-02-21 12:05:49

LibreOffiLinux工具欄

2021-02-27 21:45:22

程序代碼函數

2025-03-12 10:36:32

2022-01-22 16:25:51

System76桌面應用
點贊
收藏

51CTO技術棧公眾號

国产www免费| 国内不卡一区二区三区| 欧美成人久久久免费播放| 日韩午夜视频在线| 亚洲一区中文日韩| 欧美日韩另类综合| 国产精品嫩草影院桃色| 在线精品一区二区| 一区二区三区久久精品| 手机看片国产精品| 天天免费亚洲黑人免费| 亚洲乱码一区二区三区在线观看| 国内外成人免费视频| 在线播放一级片| 亚洲二区视频| 日日噜噜噜夜夜爽亚洲精品| 色哟哟视频在线| 另类一区二区| 一本色道**综合亚洲精品蜜桃冫| 国产a级片免费看| 三区在线观看| 国产精品白丝jk黑袜喷水| 欧美激情免费在线| 中文字幕欧美激情极品| 欧美aaaaa级| 日韩午夜中文字幕| 一区二区三区视频网| 三妻四妾完整版在线观看电视剧 | 国产美女诱惑一区二区| 久久在精品线影院精品国产| 亚洲天堂久久新| 91久久偷偷做嫩草影院电| 欧美在线观看视频一区二区| 内射国产内射夫妻免费频道| av网址在线播放| 中文成人综合网| 免费国产一区二区| 色婷婷在线视频| 国v精品久久久网| 96pao国产成视频永久免费| www.av88| 久久久久久色| 欧美影院在线播放| 日本一区二区三区免费视频| 国内一区二区三区| 欧美日韩国产二区| www.av视频| 在线中文字幕第一区| 深夜福利日韩在线看| 美国黑人一级大黄| 欧美日韩国产一区二区三区不卡| 日韩av在线一区| 性久久久久久久久久久| 精品国产一区二区三区成人影院 | 欧美肉大捧一进一出免费视频| 成人短视频软件网站大全app| 欧美日韩一区二区在线观看| 日本va中文字幕| av免费在线一区| 色88888久久久久久影院野外 | 青青草免费av| 欧美精品一区二区三区久久久竹菊| zzijzzij亚洲日本成熟少妇| 91传媒免费观看| 999成人精品视频线3| 久久精品视频在线播放| 日韩欧美123区| 亚洲有吗中文字幕| 欧美黑人巨大xxx极品| 国产精品第72页| 国产日韩精品视频一区二区三区 | 久久亚洲免费视频| 日本一区二区三区www| 成人亚洲性情网站www在线观看| 欧美国产精品专区| 亚洲国产精品女人| 黄页网站在线| 欧美性猛交xxxx| 我看黄色一级片| 国产999精品在线观看| 日韩一区二区三区精品视频| 无码人妻精品一区二区三| 色爱综合av| 最近2019年好看中文字幕视频| 天天操天天操天天操天天操天天操| 国产精品mm| 日本免费久久高清视频| 中文字幕视频免费观看| 国产成人啪免费观看软件| 精品一区久久| 青青青青在线| 午夜精品久久久久久久| 无遮挡又爽又刺激的视频| 麻豆久久久久| 日韩精品在线影院| 福利视频第一页| 亚洲三级免费| 国产三级精品网站| 五月激情丁香婷婷| 国产精品久久久久久久久免费丝袜| 激情六月天婷婷| 小早川怜子影音先锋在线观看| 欧美日韩在线直播| 国产伦精品一区二区三区精品| 黑丝美女一区二区| 欧美日韩xxxxx| 中文无码精品一区二区三区| 粉嫩高潮美女一区二区三区| 日韩欧美亚洲在线| av日韩国产| 在线播放91灌醉迷j高跟美女| 国产精品成人无码专区| 国产精品久久久久一区二区三区厕所 | 伊人成人在线视频| 成人免费视频网址| 噜噜噜噜噜在线视频| 亚洲狠狠丁香婷婷综合久久久| 免费黄色特级片| 国产精品中文字幕制服诱惑| 久久精品美女视频网站| 狠狠狠狠狠狠狠| 不卡一区二区在线| 青青视频免费在线| 成人乱码手机视频| 国产午夜精品一区二区三区| 日本中文字幕免费观看| 国产精品综合二区| 一区二区精品视频| 欧美日韩亚洲国产| 亚洲裸体xxxx| 日韩在线视频免费播放| 丁香啪啪综合成人亚洲小说 | 影音先锋亚洲一区| av一本久道久久波多野结衣| 日本中文字幕视频在线| 91成人免费在线视频| 中文在线观看免费视频| 欧美日韩理论| 91精品天堂| 爆操欧美美女| 欧美一区二区在线不卡| 手机在线中文字幕| 日韩1区2区3区| 日本精品二区| 一二区成人影院电影网| 亚洲欧美中文字幕| 蜜臀精品一区二区三区| 国产亚洲综合在线| 日本在线视频www| 国产精品美女久久久久久不卡| 欧美在线视频免费| 蜜桃视频在线入口www| 色哟哟欧美精品| 日本乱子伦xxxx| 日本不卡一区二区三区高清视频| 日本一区免费| 成人国产激情| 中文字幕日韩综合av| 亚洲图片小说视频| 中文字幕制服丝袜成人av| 57pao国产成永久免费视频| 99久久99热这里只有精品| 成人网在线免费观看| 福利视频在线| 精品成a人在线观看| 国产午夜久久久| 99久久综合狠狠综合久久| 国产xxxxx在线观看| 欧美三级美国一级| 国产欧美一区二区三区四区| 九七久久人人| 日韩精品自拍偷拍| 日本熟伦人妇xxxx| 久久人人97超碰com| 蜜臀av免费观看| 一区二区在线影院| 国产中文一区二区| 日本欧美韩国| 欧美成人中文字幕在线| 午夜国产在线观看| 欧美日韩亚洲综合在线| 免费高清在线观看电视| 处破女av一区二区| 久久国产色av免费观看| 99久久www免费| 激情欧美一区二区三区中文字幕| 丝袜老师在线| 久久精品91久久久久久再现| 农村少妇久久久久久久| 色老汉av一区二区三区| 午夜精品福利在线视频| 91日韩在线专区| 亚洲18在线看污www麻豆| 悠悠资源网久久精品| 亚洲丰满在线| 国产欧美三级电影| 国产欧美一区二区三区久久| 国产无遮挡裸体视频在线观看| 中文字幕久精品免费视频| 午夜精品久久久久久久91蜜桃| 欧美日韩一二三四五区| 中国一级片在线观看| www激情久久| 91精品国产高清91久久久久久 | 日韩大片在线播放| 国产伦精品一区二区三区视频免费| 精品3atv在线视频| 欧美精品久久久久| 日本中文字幕视频在线| 日韩精品在线免费播放| www.色亚洲| 欧美性生活影院| 国产一区二区99| 亚洲精品伦理在线| 青青青视频在线免费观看| 91香蕉视频mp4| 久久aaaa片一区二区| 日韩国产欧美一区二区三区| 人人干视频在线| 欧美 日韩 国产一区二区在线视频 | 国内精品久久久久久久久久 | 亚洲国产精品久久久久久久| 欧美在线观看视频一区二区| 亚洲精品1区2区3区| 亚洲精品日韩综合观看成人91| 国产精品jizz| aaa国产一区| 午夜性福利视频| 国产在线视频一区二区三区| 欧美日韩在线成人| 久久国产精品毛片| 欧美啪啪免费视频| 亚洲婷婷在线| 国内自拍中文字幕| 91精品国产福利在线观看麻豆| 日韩免费av电影| 国产99久久精品一区二区300| 国产日韩二区| 老汉色老汉首页av亚洲| 国产不卡一区二区在线观看| 亚洲日本va| 97视频热人人精品| 日韩精品视频在线看| 91视频免费在线| 色8久久久久| 91精品在线影院| 57pao成人永久免费| 国产精品中文字幕在线| 日韩成人综合网| 91精品免费视频| 日韩在线成人| 成人综合av网| 理论片一区二区在线| 国产在线精品一区二区中文| 五月综合久久| 日韩视频在线播放| 久久蜜桃av| 三级在线免费观看| 国内久久精品| 干日本少妇首页| 日韩高清不卡一区二区| 亚洲精品性视频| 国产裸体歌舞团一区二区| 福利视频999| 国产不卡一区视频| 先锋资源av在线| 久久久精品日韩欧美| 成人在线一级片| 国产精品久久福利| 免费在线观看一级片| 亚洲第一福利一区| 91视频久久久| 91精品国产免费久久综合| 国产按摩一区二区三区| 亚洲精品一区二区三区精华液 | 超碰在线观看99| 亚洲精品av在线| 福利在线播放| 久久电影一区二区| 蜜桃视频m3u8在线观看| 日本91av在线播放| 色狠狠一区二区三区| 成人自拍网站| 欧洲乱码伦视频免费| 久久精品国产精品亚洲精品色| 欧美天堂亚洲电影院在线观看| 亚洲中文字幕无码专区| 麻豆精品在线视频| 天天躁日日躁狠狠躁av| 国产亚洲精品7777| 国产黄在线免费观看| 欧美日韩国产综合新一区| 中文字幕人成人乱码亚洲电影| 日韩区在线观看| 国产一二在线观看| 欧美激情中文字幕乱码免费| 欧美精选视频一区二区| 99久久综合狠狠综合久久止| 精品国产精品久久一区免费式 | 日本成人免费在线观看| 午夜视频在线观看一区二区 | 国产高清精品软男同| 国产视频一区三区| 日本精品一区在线| 久久网站热最新地址| 国产乱国产乱老熟300| 色8久久精品久久久久久蜜| 亚洲成a人片在线| 中文字幕综合在线| 男人久久天堂| 91久久大香伊蕉在人线| 欧美日韩国产高清电影| 337p粉嫩大胆噜噜噜鲁| 国产一区二区三区久久久| 妺妺窝人体色WWW精品| 香蕉成人伊视频在线观看| 国产麻豆免费观看| 永久免费毛片在线播放不卡| 黄视频网站在线观看| 91黄色精品| 欧美激情另类| 欧美黄色性生活| 久久久精品欧美丰满| 制服.丝袜.亚洲.中文.综合懂色| 日韩精品一区二区三区中文精品 | 亚洲综合福利| 男女激情免费视频| 国产综合久久久久久久久久久久| 中国毛片在线观看| 欧美日韩在线免费观看| 黄色美女一级片| 久久成人国产精品| 亚洲精品66| 一区二区三区视频| 日本成人在线不卡视频| 无码少妇一区二区| 色妹子一区二区| 韩国中文免费在线视频| 国产98色在线| 免费成人结看片| 日韩av播放器| 国产偷国产偷亚洲高清人白洁| 国产又爽又黄的视频| 日韩hd视频在线观看| 日韩深夜视频| 欧美凹凸一区二区三区视频| 国产欧美一级| 扒开jk护士狂揉免费| 欧美视频一区二区三区…| 五月色婷婷综合| 奇米成人av国产一区二区三区| 亚洲自拍都市欧美小说| 国产熟人av一二三区| 国产精品视频在线看| 亚洲综合视频在线播放| 日韩在线视频免费观看| 亚洲成人毛片| 乱子伦一区二区| 国产·精品毛片| 综合激情网五月| 亚洲女同精品视频| 日本h片久久| 一级黄色免费在线观看| 国产成+人+日韩+欧美+亚洲| 亚洲精品午夜久久久久久久| 亚洲精品少妇网址| 国产情侣一区二区三区| 蜜臀在线免费观看| 99在线热播精品免费| av毛片在线免费观看| xvideos亚洲人网站| 亚洲精品黑牛一区二区三区| 少妇av一区二区三区无码| 久久久美女毛片| 一级做a爱片久久毛片| 欧美丰满老妇厨房牲生活| 欧美爱爱网站| 在线黄色免费观看| 亚洲影视在线观看| 日韩专区一区二区| 成人黄色av网| 99成人在线| 久久久99999| 亚洲黄色av女优在线观看| 深夜成人福利| www婷婷av久久久影片| 91视频xxxx| 91久久精品国产91性色69| 久久久久中文字幕2018| 欧美手机视频| xxxwww国产| 欧美精品一级二级| 国产精品一二三产区| 亚洲综合第一| 91网站在线播放| 国产强被迫伦姧在线观看无码| 91精品国产成人| 久久精品亚洲人成影院 | 九九久久电影| 中文字幕 欧美 日韩|