冒泡 插入 選擇排序及其C語言實現詳解

2021-10-01 04:41:15 字數 2192 閱讀 8842

目錄

如何分析乙個「排序演算法」?

1、排序演算法的執行效率

2、排序演算法的記憶體消耗

3、排序演算法的穩定性

陣列排序資料結構

一、氣泡排序

二、插入排序

三、選擇排序

對於排序演算法執行效率的分析,一般會從這幾個方面來衡量:

1. 最好情況、最壞情況、平均情況時間複雜度

2. 時間複雜度的係數、常數 、低階

3. 比較次數和交換(或移動)次數

演算法的記憶體消耗可以通過空間複雜度來衡量,排序演算法也不例外。不過,針對排序演算法的空間複雜度,我們還引入了乙個新的概念,原地排序(sorted in place)就是特指空間複雜度是 o(1) 的排序演算法。氣泡排序、插入排序、選擇排序 都屬於原地排序

穩定性:如果待排序的序列中存在值相等的元素,經過排序之後,相等元素之間原有的先後順序不變,那就是穩定的排序演算法,如果順序變化則是不穩定的排序演算法。

;氣泡排序只會操作相鄰的兩個資料。每次冒泡操作都會對相鄰的兩個元素進行比較,看是否滿足大小關係要求。如果不滿足就讓它倆互換。一次冒泡會讓至少乙個元素移動到它應該在的位置,重複 n 次,就完成了 n 個資料的排序工作;第i次需比較的次數為n-i-1。比如我們要對一組資料 4,5,6,3,2,1,從小到大進行排序。第一次冒泡操作的詳細過程如圖【左】,整個排序過程如圖【右】

}將陣列中的資料分為兩個區間,已排序區間和未排序區間,初始已排序區間只有乙個元素,就是陣列的第乙個元素。插入演算法的核心思想是取未排序區間中的元素,在已排序區間中找到合適的插入位置將其插入,並保證已排序區間資料一直有序。重複這個過程,直到未排序區間中元素為空,演算法結束

}選擇排序演算法的實現思路有點類似插入排序,也分已排序區間和未排序區間。但是選擇排序每次會從未排序區間中找到最小的元素,將其放到已排序區間的末尾。

冒泡 插入 選擇排序及其改進

這三種排序方式可以說是最簡單,最常用的三種排序方式了。值得說的是,在每種排序之後我都附加了其改進版本。普通氣泡排序 void bubble sort int array,int size 改進一 氣泡排序中如果這一趟裡面沒有交換任何元素,說明陣列中每個元素都一排好序。就不用再繼續比較了。void b...

冒泡,插入,選擇排序

經典的排序演算法,此文章介紹三個 氣泡排序 它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。public void bubblesort int a while iswrap for int ...

冒泡 插入 選擇 快速排序

各位親 有時間可以去看看我的 金駿家居 店 買時說明在我的部落格看到有優惠哦 還有意外禮品贈送 真正的程式設計師 店 氣泡排序 每次找出最大或者最小的數放到序列的最後。插入排序 每一次查詢都把數放到已排序序列合適的位置。例子 4,3,2,1如數中的第乙個數肯定是有序的,從第二個數開始3小於4,放在已...