經典排序演算法整理1 0

2021-10-02 00:06:36 字數 1599 閱讀 5842

對一串行物件根據某個關鍵字進行排序叫做排序

穩定與不穩定:若排序前a在b之前且a=b,排序後a還在b前叫做穩定,若a不一定在b前叫做不穩定.

內排序與外排序:所有排序都在記憶體中完成叫做內排序;由於資料量大,所以把資料放在磁碟中,而外排序就是必須得通過磁碟和內初的資料傳輸才能進行的排序.

**複雜度:**複雜度分為時間複雜度和空間複雜度,乙個演算法執行所需要的時間叫做時間複雜度

氣泡排序(bubble sort)是一種比較基礎的排序演算法,一次比較兩個元素,如果他們的順序是反的就將他們交換過來.

****描述:**比較相鄰的元素,若第乙個比第二個大,就進行交換,對每一對相鄰元素進行同樣的操作,重複上述工作直到排序完成.

public

static

int[

]bubblesort

(int

array)

for(

int i =

0; i < array.length; i++

)return array;}}

}

氣泡排序屬於交換排序(比較排序)的一種,排序占用常數記憶體,時間複雜度為資料量(x)的平方,空間複雜度為1,為穩定排序.

選擇排序(selection sort)是表現最為穩定的排序演算法之一,因為無論是什麼樣的資料集進去都是x²的時間複雜度,所以當資料量越小的時候用選擇排序的效果最好,但是選擇排序是不穩定的,因為相等元素排序後順序有可能會有變化.

**描述:首先在為排序的資料中找到min(max)元素,

放到序列的起始位置,然後再從剩餘未排序的元素中繼續找到min(max)元素,再放到序列末尾,以此類推

public

void

selectsort

(int

source)

int temp = a[i]

; a[i]

= a[min]

; a[min]

= temp;

//swap(i,min);}}

}

交換排序也是屬於交換排序的一種,時間複雜度恆定為x²,

空間複雜度也同樣是1,不需要額外的空間.

插入排序(insertsort) 使用插入排序時最好的情況就是被排序的序列已經是公升序排列,在這種情況下,需要進行n-1次比較即可,插入排序比冒泡和選擇排序都快一些,經常被用在較為複雜的排序演算法的最後階段,e:快速排序.

**描述:從第乙個元素開始(此元素已經可以被認為是被排序),取出下乙個元素,在已經排序完成從後向前進行掃瞄,若該元素小於前乙個元素,則將兩者調換,再與前乙個進行比較,重複第三步,知道找到已排序的元素小於或者等於新元素的位置,將新元素插入到該位置中,重複掃瞄步驟即可

public

void

insertsort

(int

soure)

}}

插入排序平均的時間複雜度為x²,且插入排序是穩定的排序,

空間複雜度同樣為1,不需要額外的空間.

經典演算法10

關鍵字 拉格朗日,牛頓插值,高斯,龍貝格 1.拉格朗日插值多項式 用於離散資料的擬合 c c code include include include float lagrange float x,float y,float xx,int n 拉格朗日插值演算法 free a return yy m...

經典KMP演算法整理

kmp演算法 大名鼎鼎的演算法 kmp由三位前輩的名字縮寫組成 其中第一位就是寫the art of the computer programming的高德納 它是一種效率很高的字串匹配演算法 傳統樸素做法的時間複雜度為o n m 而kmp演算法能將時間複雜度縮小到o n m 下面進入正題 kmp演...

經典排序演算法

排序分為內部排序和外部排序,內部排序是指待排序的資料都是在記憶體中的,例如陣列 外部排序指待排序資源在記憶體外,例如對檔案的排序。此篇說的是內部排序。通俗地來說,內部排序就是將一堆資料按一定規則對它進行排序。排序又分為穩定排序和不穩定的排序,如果初始序列ai,ak有序 ai ak 排序後變成了ak,...