氣泡排序,選擇排序,插入排序

2021-06-03 16:49:46 字數 1355 閱讀 5225

氣泡排序,選擇排序,插入排序

小規模的檔案以及基本有序的檔案,插入排序的效能比快速排序的效能更為有效一些,實際上,插入排序通常也做快速排序實現的一部分。

1 氣泡排序:

packagedatastrut;

public classbubblesort

public voidinsert(longvalue)

public voiddisplay()

public voidswap(intone,inttwo)

public voidbubblesort()}}

}public static voidmain(string args)

}效率:(n-1)+(n-2)+…+1= n*(n-1)/2     大約 o(n^2)

比較次數大約:n^2/2   交換次數:n^2/4

2,選擇排序:

氣泡排序的一種改進,交換次數從o(n^2)減少到o(n),但比較次數仍為o(n^2)

/* * 選擇排序

* */

public voidselectsort()

}選擇排序的效率:o(n^2)

交換次數從o(n^2)減少到o(n),但比較次數仍為o(n^2)

當n值較小時,特別是如果交換的時間級比比較時間級大得多時,選擇排序實際上是相當快的。

3,插入排序

仍然需要o(n^2) ,但是一般情況下,它要比氣泡排序快一倍,比選擇排序還要快一點。

/* * 插入排序

* */

public voidinsertsort()

a[in] = temp;

}插入排序效能:對於已經有序或者基本有序的資料來說,插入排序要好得多。當資料有序的時候,while迴圈的條件總是假,所以他變成了外層迴圈中的乙個簡單語句,執行n-1次,o(n)。

如果資料基本有序,插入排序幾乎只需要o(n)的時間。

三種效能比較:

1, 冒泡:資料量小的時候。交換o(n^2),比較o(n^2)

2, 選擇:資料量小,交換資料相對於比較資料更加耗時時。交換o(n),比較o(n^2)

3, 插入:資料量小或者基本有序時。複製o(n^2),比較o(n^2) 一次複製與一次交換的時間耗費不同。

都需要乙個額外的變數來暫時儲存交換時的資料項。

舍拉官方店

選擇排序 , 插入排序 , 氣泡排序

編寫 include void println int array,int len 列印給定長度的陣列 printf n void swap int array,int i,int j 交換陣列中兩個位置的元素 void selectionsort int array,int len o n n 對...

氣泡排序 插入排序 選擇排序

氣泡排序是每輪比較未排序部分,從第乙個元素開始找最值,比較相鄰數字,依次往後推移,最終將最值置於最右。假設有n個數,外迴圈迴圈n 1遍,內迴圈是n 1在減去當前是第幾次外迴圈。void bubble sort mytype a,int n n為陣列長度 插入排序是從第二個元素開始快取,然後向前比較,...

氣泡排序 插入排序 選擇排序

從起始索引開始,每次和後面元素的比較,如果比後面大就交換 每完成一次遍歷,最後乙個一定最大,所以第二只用遍歷到倒數第乙個,以此類推 優化 如果在一次遍歷過程中沒有發生交換,說明排序完成,直接退出。t n o n int a 100 i,j,n 索引從1開始 int flag 0 是否發生交換 for...