三種簡單排序比較總結(冒泡 插入 選擇)

2021-09-05 12:06:52 字數 1870 閱讀 9340

首先我們了解一下三種演算法穩定性 演算法

穩定性排序方式

時間複雜度

最好時間

空間複雜度

冒泡穩定

交換o(n2)

o(n)

o(1)

插入穩定

直接插入

o(n2)

o(n)

o(1)

選擇不穩定

直接選擇

o(n2)

o(n)

o(1)

三種最好時間都是:在接近有序的時候!

接著我們看一下**

首先我們定一下陣列:12,23,34,2,23,6

氣泡排序

int temp =0;

//設定空值,作為值交換

//迴圈次數--外迴圈

for(

int i =

0; i < nums.length; i++

)//迴圈小於總長度}}

//迴圈遍歷顯示結果

foreach (

int number in nums)

console.

readkey()

;

插入排序

for

(int i =

1; i < nums.length; i++

)//外層迴圈確定待比較數值

int j =0;

for(j = i -

1; j >=

0&& nums[j]

> temp; j--

)//內迴圈是確定已排序個數的比較次數

nums[j +1]

= temp;

//最後確定需要放的位置。因為先執行的j--,現在j為-1,所以是j+1

} foreach (var item in nums)

//依次迴圈顯示資料

console.

readline()

;

選擇排序

//選擇排序主要迴圈**:

for(

int i =

0; i < nums.length; i++

)//設定外迴圈次數

}//最小值和第i個數交換。

n = nums[temp]

; nums[temp]

= nums[i]

; nums[i]

= n;

}//依次迴圈顯示:

foreach (var item in nums)

console.

read()

;

圖表分析不同點

算 法說明冒泡

兩次迴圈都是從0開始,並且交換在內迴圈巢狀中進行值交換

插入插入演算法在外迴圈進行做乙個和前面數的比較大小,如果比前面數大則直接進行下乙個數即可,如果小則進入內迴圈,在內迴圈中做乙個值的後移操作,最後進行賦值到需要的位置即可。

選擇此演算法可以進行下標的移動進而移動相對應的值,因為選擇是將後面最大值/最小值放到依次對應的位置上面,所以每次都是兩個值做交換,不會動到其他的值。

思想總結 演算法

思想冒泡

最簡單演算法,利用水泡的原理,排序乙個從小到大的序列,適用於小波人排隊

插入適用於 撲克牌的抓牌,這樣可以每次從無序中最前面插入到有序序列中比後面大比前面小的空位中,使得插入的值的後面位置都會加一

選擇適用於買衣服,從無序裡面選擇最便宜的放到你需要的買的地方去,這樣每個人都會買到需要最便宜的衣服。

相同點三種演算法時間和空間複雜度都一樣且最後都是值交換,迴圈上面都是兩次迴圈且都需要變數來進行轉換,生活場景上都可以進行演算法替換!

三種簡單排序 冒泡 選擇 插入

include using namespace std 簡單排序 平均時間複雜度都是o n方 級別。包括 氣泡排序 插入排序 選擇排序 說明 實現的演算法都是公升序排序。void swap int e1,int e2 氣泡排序 穩定 重複地走訪過要排序的元素列,一次比較兩個相鄰的元素,如果他們的順序...

冒泡 插入 選擇 三種排序

一 氣泡排序 演算法思路 兩兩比較相鄰記錄之間關鍵字,如果反序則交換,直到沒有反序的記錄為止。具體 import random data n int raw input for re in range 0,n a random.randint 1,1000 data re a print data ...

演算法之三種簡單排序 插入 冒泡 插入

插入排序 特點 迴圈陣列,依次比較之前排好順序的資料與該資料的大小 public static void insertsort long arr 氣泡排序 特點 依次迴圈陣列,依次將最小的資料資訊浮於最上面 public static void bubblesort long arr 選擇排序 特點...