氣泡排序,選擇排序,插入排序
小規模的檔案以及基本有序的檔案,插入排序的效能比快速排序的效能更為有效一些,實際上,插入排序通常也做快速排序實現的一部分。
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...