成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

看完了這篇,面試的時候人人都能單手擼冒泡排序!

開發 前端
冒泡排序屬于比較簡單的一種排序方法。但是,很多同學到現在也不能手寫一個冒泡排序。甚至經過和一些剛畢業甚至工作一兩年的朋友交流后,發現他們內心對算法,抱著深深的恐懼和盲目崇拜,覺得算法好像高不可攀,只適合那些高學歷、高智商的人來學習和研究!

[[350530]]

雞湯給大家備好了:

歲月流逝是多么殘酷啊,對我們也是如此,不要把時間浪費在不重要的人和事情上!

在計算機科學中,排序是一個經典的主題。學習排序算法的好處有三:

1.創造性解決問題

2.練習和鞏固程序設計技能

3.演示算法性能的極好例子

冒泡排序屬于比較簡單的一種排序方法。但是,很多同學到現在也不能手寫一個冒泡排序。甚至經過和一些剛畢業甚至工作一兩年的朋友交流后,發現他們內心對算法,抱著深深的恐懼和盲目崇拜,覺得算法好像高不可攀,只適合那些高學歷、高智商的人來學習和研究!今天,我想把這篇獻給他們,希望他們能樹立起學習的勇氣和信心!

1.什么是冒泡排序

冒泡排序算法需要遍歷幾次數組,在每次遍歷中,比較連續相鄰的元素。如果一對元素是降序排列,則互換他們的位置,否則保持不變。這樣一來,使得較小的值像“氣泡”一樣,逐漸浮向頂部,而較大的值沉入底部,因此稱這種排序方法為冒泡排序(bubble sort )或下沉排序(sinking sort)。

第一次遍歷之后,最后一個元素將成為最大的元素。第二次遍歷之后,倒數第二個元素,將成為倒數第二大的元素。整個過程持續到所有的元素全部都已排好序。

2.圖解冒泡排序

經過第一次遍歷后,最大的數已經在數組末尾。因為最后一個數已經是最大數,因此不需要再考慮最后一對元素。

經過第二次遍歷,后兩個數已經排好序,所以只需要對除它們之外的元素進行排序。

因此,在進行第n次遍歷時,不需要考慮倒數第n-1個元素,因為它們已經排好序了!

冒泡排序偽代碼:

  1. for(int k = 1; k < list.length; k++){ 
  2.     for(int j = 0; j < list.length-k; j++) { 
  3.         if(list[j] > list[j + 1]) { 
  4.             swap(list[i], list[i + 1]); 
  5.         } 
  6.     } 

3.改進后的冒泡排序

注意到,上面的排序實際上有很多次沒有發生交換,因此,我們可以對冒泡排序稍微改進下:

  1. boolean nextPass = true
  2. for(int k = 1; k < list.length && nextPass; k++){ 
  3.     nextPass = false
  4.     for(int j = 0; j < list.length-k; j++) { 
  5.         if(list[j] > list[j + 1]) { 
  6.             swap(list[i], list[i + 1]); 
  7.             nextPass = true
  8.         } 
  9.     } 

4. 冒泡排序時間復雜度

最佳情況下,冒泡排序只需要一次遍歷就能確定數組已排好序,不需要再進行下一次遍歷。因此,最佳情況下,冒泡排序時間復雜度為O(n)。

最壞情況下,冒泡排序需要 次。因此比較總次數為: $$ (n-1) + (n-2) + (n-3) + ...+ 3 + 2 + 1 = ({\frac n2^2} - {\frac n2}) = O(n^2) $$ 所以,最壞情況下,冒泡排序的時間復雜度為:O(n^2)。

5. 附上函數

  1. public static void bubbleSort(int[] list) { 
  2.     boolean nextPass = true
  3.     for(int k = 1; k < list.length && nextPass; k++){ 
  4.         nextPass = false
  5.         for(int j = 0; j < list.length-k; j++) { 
  6.             if(list[j] > list[j + 1]) { 
  7.                 int tmp = list[j]; 
  8.                 list[j] = list[j+1]; 
  9.                 list[j+1] = tmp; 
  10.                 nextPass = true
  11.             } 
  12.         } 
  13.     } 
  14. }  

本文轉載自微信公眾號「鍋外的大佬」,可以通過以下二維碼關注。轉載本文請聯系鍋外的大佬公眾號。

 

責任編輯:武曉燕 來源: 鍋外的大佬
相關推薦

2012-05-14 14:35:41

2020-05-19 14:00:09

人工智能機器學習AI

2021-03-18 11:45:49

人工智能機器學習算法

2020-05-28 11:36:13

數據倉庫大數據架構

2021-12-29 10:21:41

Linux 權限擴展名

2020-03-14 09:17:55

HTTPS網絡協議HTTP

2021-05-08 07:53:33

面試線程池系統

2020-01-15 08:06:28

HTTP超文本傳輸協議網絡協議

2020-02-03 17:22:34

垃圾回收原理種類

2022-11-21 07:58:10

Java排序冒泡排序

2020-07-05 09:12:42

java冒泡排序算法

2020-05-15 11:14:58

操作系統面試官運行

2018-04-23 11:00:44

PythonRedisNoSQL

2019-10-30 08:53:46

JavaScript冒泡排序選擇排序

2020-12-09 08:35:45

Shell腳本語法

2017-02-09 19:45:07

Linux系統Linux 發行版

2011-04-20 14:07:37

冒泡排序

2020-04-07 01:04:18

SessionCookieToken

2020-04-15 12:24:55

Exception Error Java

2025-03-28 08:53:51

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲永久字幕 | 国产精品久久久久无码av | 国产成人一区 | 欧美视频在线观看 | 精品国产乱码久久久久久果冻传媒 | 91av导航| 成人污污视频 | 精品久久久久久 | 大陆一级毛片免费视频观看 | 欧美在线综合 | 免费观看www | 91精品国产一区 | 女同久久另类99精品国产 | www.av7788.com| 噜久寡妇噜噜久久寡妇 | 欧美 日韩 亚洲91麻豆精品 | 99免费精品 | 91麻豆精品国产91久久久更新资源速度超快 | 欧洲精品码一区二区三区免费看 | 欧美日韩亚洲二区 | 91精品国产高清一区二区三区 | 亚洲精品4 | 国产成人精品一区二区三区四区 | 久久久青草婷婷精品综合日韩 | 日韩av免费在线观看 | 天天干国产| 国产乱精品一区二区三区 | 9999国产精品欧美久久久久久 | 欧美99| 欧美精品video | 五月婷婷色 | 中文字幕一区二区三区在线观看 | 看av网| 偷拍亚洲色图 | 国产日韩欧美一区二区 | 东京久久 | 国产成人精品一区二 | 亚洲一区 中文字幕 | 日韩欧美视频网站 | 精品久久国产 | 在线一区视频 |