排序算法——(1)簡(jiǎn)介

隨著人口城鎮(zhèn)化的進(jìn)程,城市人口的慢慢增加符相,對(duì)于一些生活在一二線城市的同學(xué)來說拆融,排隊(duì)已然成為生活中的基操:上公交排隊(duì)、打車排隊(duì)啊终、坐地鐵排隊(duì)镜豹、點(diǎn)餐排隊(duì)、喝奶茶排隊(duì)蓝牲、辦證排隊(duì)趟脂、下課ATM取錢排隊(duì)……說到排隊(duì),豬哥想起有次去銀行辦事的我……

排隊(duì)

排隊(duì)我們可以理解為是根據(jù)時(shí)間(先來后到的)做的一種排序例衍,使元素從無序到有序的方法昔期,我們稱為:排序算法

程序世界往往和現(xiàn)實(shí)世界有很多相似之處佛玄,所以排序的問題在工作中也常常會(huì)遇到硼一,比如商品根據(jù)不同條件排序、搜索相關(guān)性排序梦抢、以及一些根據(jù)時(shí)間或以某種規(guī)則的排序等等般贼;而且在面試和算法比賽中排序也是必不可少的一個(gè)考點(diǎn),比如手寫一個(gè)快排惑申、如何處理億級(jí)數(shù)據(jù)排序以及時(shí)間復(fù)雜和空間復(fù)雜度等問題具伍;

排序算法對(duì)程序員來說可以說是一項(xiàng)基本功,其重要性是不言而喻的圈驼。本期豬哥帶大家來了解下常見的十大排序算法,而本文會(huì)作為開胃菜為大家簡(jiǎn)單介紹一些排序算法的相關(guān)概念望几,下次會(huì)為大家詳細(xì)講解每種排序的代碼實(shí)現(xiàn)及圖解绩脆!

一、排序定義

既然排序如此重要那何為排序呢橄抹?看看百科對(duì)排序的定義:

排序是計(jì)算機(jī)內(nèi)經(jīng)常進(jìn)行的一種操作靴迫,其目的是將一組“無序”的記錄序列調(diào)整為“有序”的記錄序列÷ナ模——百度百科

豬哥的理解是:簡(jiǎn)單來說就是將一組無序的數(shù)據(jù)通過某種算法然后使它們按某種規(guī)則有序的排列玉锌,這就是排序的定義。

二疟羹、相關(guān)概念

排序(Sorting) 是計(jì)算機(jī)程序設(shè)計(jì)中的一種重要操作主守,它的功能是將一個(gè)數(shù)據(jù)元素(或記錄)的任意序列禀倔,重新排列成一個(gè)關(guān)鍵字有序的序列。

排序算法是一種算法参淫,而算法是與語言無關(guān)的救湖,你可以用Python實(shí)現(xiàn),也可以用Java涎才、C鞋既、Js等任何語言實(shí)現(xiàn)。

1.比較排序和非比較排序

我們將排序的時(shí)候元素之間是否需要比較分為:比較排序和非比較排序耍铜,下面簡(jiǎn)單理解一下這兩個(gè)概念:

a)比較排序:

顧名思義就是需要通過元素之間比較之后再?zèng)Q定先后順序邑闺。如下冒泡排序的動(dòng)圖,每次都是選取兩個(gè)元素(綠色)進(jìn)行比較:

冒泡排序

現(xiàn)實(shí)生活中這種比較排序的例子很多棕兼,比如中學(xué)按成績(jī)排名或高矮順序來安排座位检吆;

b)非比較排序:

非比較排序就是不需要通過元素之間的比較就可以確定每個(gè)元素的位置,如下是基數(shù)排序的動(dòng)圖程储,排序時(shí)每個(gè)元素并不需要比較蹭沛,而是有自己固定的位置:

基數(shù)排序

現(xiàn)實(shí)生活中非比較排序的例子如大學(xué)坐位置;
[圖片上傳失敗...(image-79198c-1552874176257)]
[圖片上傳失敗...(image-128ae-1552874176257)]

2.穩(wěn)定和不穩(wěn)定

我們排隊(duì)的時(shí)候章鲤,當(dāng)出現(xiàn)兩個(gè)人同時(shí)搶占一個(gè)位置的情況摊灭,不免會(huì)發(fā)生一些口角;而在排序算法中也會(huì)遇到兩元素相同的情況败徊,這時(shí)候怎么辦呢帚呼?

假設(shè)我們有這樣一組數(shù)據(jù)[7,5皱蹦,2煤杀,5],然后我們來看看穩(wěn)定排序算法不穩(wěn)定排序算法得出的結(jié)果:

在這里插入圖片描述

a)穩(wěn)定:

如果a原本在b前面沪哺,而a=b沈自,排序之后a仍然在b的前面。

b)不穩(wěn)定:

如果a原本在b的前面辜妓,而a=b枯途,排序之后 a 可能會(huì)出現(xiàn)在 b 的后面。
[圖片上傳失敗...(image-e0c649-1552874176257)]

3.算法復(fù)雜度

算法復(fù)雜度分為時(shí)間復(fù)雜度和空間復(fù)雜度籍滴。其作用: 時(shí)間復(fù)雜度是指執(zhí)行算法所需要的計(jì)算工作量酪夷;而空間復(fù)雜度是指執(zhí)行這個(gè)算法所需要的內(nèi)存空間。(算法的復(fù)雜性體現(xiàn)在運(yùn)行該算法時(shí)的計(jì)算機(jī)所需資源的多少上孽惰,計(jì)算機(jī)資源最重要的是時(shí)間和空間(即寄存器)資源晚岭,因此復(fù)雜度分為時(shí)間和空間復(fù)雜度)。

a)時(shí)間復(fù)雜度:

時(shí)間復(fù)雜度(Time Complexity)是描述運(yùn)行算法所花費(fèi)的時(shí)間量的計(jì)算復(fù)雜度勋功,記做O(f(n))坦报。

n稱為問題的規(guī)模库说,當(dāng)n不斷變化時(shí),時(shí)間頻度T(n)也會(huì)不斷變化。但是它的變化是有規(guī)律的燎竖,所以引入時(shí)間復(fù)雜度這個(gè)概念璃弄。一般情況下,算法中的基本操作重復(fù)次數(shù)的是問題規(guī)模n的某個(gè)函數(shù)构回,用T(n)表示夏块,若有某個(gè)輔助函數(shù)f(n),使得當(dāng)n趨近于無窮大時(shí),T(n)/f(n)的極限值為不等于零的常數(shù)纤掸,則稱f(n)是T(n)的同數(shù)量級(jí)函數(shù)脐供。記作T(n)=O(f(n)),稱O(f(n)) 為算法的漸進(jìn)時(shí)間復(fù)雜度,簡(jiǎn)稱時(shí)間復(fù)雜度借跪。

b)空間復(fù)雜度:

空間復(fù)雜度(Space Complexity)是對(duì)一個(gè)算法在運(yùn)行過程中臨時(shí)占用存儲(chǔ)空間大小的量度政己,記做S(n)=O(f(n))。

[圖片上傳失敗...(image-a177b6-1552874176257)]

c)復(fù)雜度

上面給大家講了時(shí)間復(fù)雜度和空間復(fù)雜度掏愁,下面看看常見的幾種復(fù)雜度:
[圖片上傳失敗...(image-9004ad-1552874176257)][圖片上傳失敗...(image-78e446-1552874176257)]

三歇由、總結(jié)

本文為大家介紹了排序算法的三個(gè)相關(guān)知識(shí)點(diǎn):

  1. 比較排序和非比較排序
  2. 穩(wěn)定和不穩(wěn)定
  3. 算法復(fù)雜度


    比較與穩(wěn)定

    排序算法一覽表.png

參考:

  1. https://dwz.cn/FsEBEVK6
  2. https://dwz.cn/8hoIwpxo
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市果港,隨后出現(xiàn)的幾起案子沦泌,更是在濱河造成了極大的恐慌,老刑警劉巖辛掠,帶你破解...
    沈念sama閱讀 219,188評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谢谦,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡萝衩,警方通過查閱死者的電腦和手機(jī)回挽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來猩谊,“玉大人千劈,你說我怎么就攤上這事≡て猓” “怎么了队塘?”我有些...
    開封第一講書人閱讀 165,562評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)宜鸯。 經(jīng)常有香客問我,道長(zhǎng)遮怜,這世上最難降的妖魔是什么淋袖? 我笑而不...
    開封第一講書人閱讀 58,893評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮锯梁,結(jié)果婚禮上即碗,老公的妹妹穿的比我還像新娘焰情。我一直安慰自己,他們只是感情好剥懒,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評(píng)論 6 392
  • 文/花漫 我一把揭開白布内舟。 她就那樣靜靜地躺著,像睡著了一般初橘。 火紅的嫁衣襯著肌膚如雪验游。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,708評(píng)論 1 305
  • 那天保檐,我揣著相機(jī)與錄音耕蝉,去河邊找鬼。 笑死夜只,一個(gè)胖子當(dāng)著我的面吹牛垒在,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播扔亥,決...
    沈念sama閱讀 40,430評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼场躯,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了旅挤?” 一聲冷哼從身側(cè)響起踢关,我...
    開封第一講書人閱讀 39,342評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎谦铃,沒想到半個(gè)月后耘成,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,801評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡驹闰,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評(píng)論 3 337
  • 正文 我和宋清朗相戀三年瘪菌,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片嘹朗。...
    茶點(diǎn)故事閱讀 40,115評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡师妙,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出屹培,到底是詐尸還是另有隱情默穴,我是刑警寧澤,帶...
    沈念sama閱讀 35,804評(píng)論 5 346
  • 正文 年R本政府宣布褪秀,位于F島的核電站蓄诽,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏媒吗。R本人自食惡果不足惜仑氛,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧锯岖,春花似錦介袜、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至捶牢,卻和暖如春鸠珠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背叫确。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工跳芳, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人竹勉。 一個(gè)月前我還...
    沈念sama閱讀 48,365評(píng)論 3 373
  • 正文 我出身青樓飞盆,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親次乓。 傳聞我的和親對(duì)象是個(gè)殘疾皇子吓歇,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評(píng)論 2 355