熱線電(dian)話:0755-23712116
郵箱:contact@legoupos.cn
地址:深圳市寶安區(qu)沙(sha)井街道后(hou)亭茅(mao)洲山工業(ye)園(yuan)工業(ye)大(da)廈(sha)全至科技(ji)創新園(yuan)科創大(da)廈(sha)2層2A
0.3 相關(guan)概念(nian)
內執行時(shi)所需存儲空間的(de)度量,它也是數據規模(mo)n的(de)函數。
冒泡(pao)排序(xu)是一種簡(jian)單的(de)(de)排序(xu)算(suan)法。它重(zhong)復地(di)走訪(fang)(fang)過要排序(xu)的(de)(de)數列(lie)(lie),一次(ci)比(bi)較兩個元素(su),如果它們的(de)(de)順序(xu)錯誤就把(ba)它們交(jiao)換過來(lai)。走訪(fang)(fang)數列(lie)(lie)的(de)(de)工(gong)作(zuo)是重(zhong)復地(di)進行(xing)直到沒(mei)有再(zai)需要交(jiao)換,也就是說該數列(lie)(lie)已經(jing)排序(xu)完(wan)成(cheng)。這個算(suan)法的(de)(de)名字由(you)來(lai)是因為越小的(de)(de)元素(su)會經(jing)由(you)交(jiao)換慢慢“浮”到數列(lie)(lie)的(de)(de)頂端(duan)。
1.2 動圖演示(shi)
選擇排(pai)(pai)序(xu)(xu)(Selection-sort)是一種簡單直觀(guan)的(de)(de)(de)排(pai)(pai)序(xu)(xu)算(suan)法。它的(de)(de)(de)工作原理(li):首先在(zai)未排(pai)(pai)序(xu)(xu)序(xu)(xu)列中找(zhao)到最小(xiao)(大(da))元(yuan)素(su),存放到排(pai)(pai)序(xu)(xu)序(xu)(xu)列的(de)(de)(de)起(qi)始位(wei)置,然(ran)后,再從剩余未排(pai)(pai)序(xu)(xu)元(yuan)素(su)中繼續尋找(zhao)最小(xiao)(大(da))元(yuan)素(su),然(ran)后放到已排(pai)(pai)序(xu)(xu)序(xu)(xu)列的(de)(de)(de)末尾。以此類推,直到所(suo)有元(yuan)素(su)均排(pai)(pai)序(xu)(xu)完畢。
n個記錄的(de)直接(jie)選(xuan)擇排序(xu)可經過n-1趟直接(jie)選(xuan)擇排序(xu)得到有序(xu)結果。具(ju)體算法(fa)描(miao)述如下:
表現最穩定的排序算法之一,因為無論什么數據進去都是O(n2)的(de)(de)時間復雜度,所(suo)以用到(dao)它的(de)(de)時候,數(shu)據規模越小越好。唯一(yi)的(de)(de)好處(chu)可能(neng)就是不占(zhan)用額外的(de)(de)內(nei)存空間了吧。理(li)論(lun)上講,選擇排序可能(neng)也是平(ping)時排序一(yi)般人想到(dao)的(de)(de)最多的(de)(de)排序方法了吧。
插(cha)入排序(xu)(Insertion-Sort)的算法描述(shu)是(shi)一種簡單直觀的排序(xu)算法。它的工作原理(li)是(shi)通過(guo)構建有序(xu)序(xu)列,對于(yu)未排序(xu)數據,在已排序(xu)序(xu)列中從后向前掃描,找到(dao)相(xiang)應位置并插(cha)入。
一般來說,插(cha)入排序都采用in-place在(zai)數組(zu)上實現。具體算(suan)法(fa)描(miao)述如下:
插入排序在(zai)實現上(shang),通常采(cai)用(yong)in-place排序(即(ji)只(zhi)需用(yong)到O(1)的額外(wai)空間(jian)的排序),因而在(zai)從后(hou)向(xiang)前掃描過程中,需要反復把已排序元(yuan)素逐步(bu)向(xiang)后(hou)挪位(wei),為最新元(yuan)素提供插入空間(jian)。
1959年Shell發明,第一個突破O(n2)的排序算法,是簡單插入排序的改進版。它與插入排序的不同之處在于,它會優先比較距離較遠的元素。希爾排序又叫縮小增量排序(xu)。
先將整個待排(pai)序的記(ji)錄(lu)序列分割成(cheng)為若干(gan)子(zi)序列分別(bie)進行直接插入排(pai)序,具體算法(fa)描述:
希爾排序的(de)(de)核心在于間(jian)隔(ge)序列的(de)(de)設(she)(she)定。既(ji)可以(yi)(yi)提前設(she)(she)定好(hao)間(jian)隔(ge)序列,也可以(yi)(yi)動(dong)態的(de)(de)定義(yi)間(jian)隔(ge)序列。動(dong)態定義(yi)間(jian)隔(ge)序列的(de)(de)算法是(shi)《算法(第4版)》的(de)(de)合著(zhu)者Robert Sedgewick提出的(de)(de)。