排序演算法(一)

2021-10-01 03:26:52 字數 823 閱讀 5559

今天總結了三種時間複雜度為 o(n2)的排序演算法:氣泡排序、插入排序、選擇排序

插入排序和氣泡排序的時間複雜度相同,都是 o(n2),都是原地排序演算法,都是穩定的排序演算法,但是插入排序比冒泡所用的資料交換次數少。

選擇排序是一種原地排序演算法,時間複雜度都為 o(n2),選擇排序是一種不穩定的排序演算法。

氣泡排序:

public

static

void

bubblesort

(int

list)

// 做多少輪排序(最多length-1輪)

for(

int i =

0; i < len -

1; i++)}

if(!flag)

}}

插入排序:

public

static

void

insertsort

(int

list)

// 將臨時元素插入到騰出的位置中

list[j +1]

= temp;

}}

選擇排序:

public

static

void

selectionsort

(int

list)

}// 如果min不等於i,說明找到真正的最小值

if(min != i)

}}

10w條測試資料排序結果:氣泡排序(25177ms)> 選擇排序(8174ms)> 直接排序(1304ms)

排序演算法(一)

這個學期課程很少,空閒時間很多,故重新複習了一下 演算法導論 中的常用演算法和資料結構,並且將實現 儲存到部落格,以便大三暑假找實習時方便複習。直接插入排序的思想非常簡單,將序列中第乙個元素作為乙個有序序列,然後將剩下的n 1個元素按關鍵字大小依此插入該有序序列,每插入乙個元素後依然保持該序列有序,...

排序演算法一

3個簡單的排序演算法,不多解釋了,直接上 include include void display int a,int n printf n void exchange int a,int i,int j 氣泡排序 void popsort int a,int n end for j printf ...

排序演算法(一)

氣泡排序 基本思想 在要排序的一組數中,對當前還未排好序的範圍內的全部數,自上而下對相鄰的兩個數依次進行比較和調整,讓較大的數往下沉 較小的往上冒。即 每當兩相鄰的數比較後發現它們的排序與排序要求相反時,就將它們互換。氣泡排序的示例 演算法實現 void print int arr,int size...