氣泡排序
思想:首先找到乙個最大值或者最小值,然後在剩下的待排序集合中找最大或最小
方法:相鄰的兩個比較,將較大的值向後交換,待第一次迴圈結束,最大值交換到最後乙個,因為是兩兩比較,所以第一次迴圈至少需要比較n-1次,最壞情況下需交換n-1次;隨後每次迴圈,比較次數逐漸減少,直達只剩乙個元素,時間複雜度為乙個等差數列(忽略交換次數),o(n^2)
優化:存在優化的空間
選擇排序
思想:同氣泡排序
方法:第一次,選定乙個元素作為最大值,遍歷所有元素,遇到比最大值大的元素,修改最大值的值,第一次遍歷結束,得到最大值;第二次 遍歷除最大值外的所有元素,尋找第二大值,每次尋找遍歷的元素數成等差數列,時間複雜度o(n^2)
;
與氣泡排序的區別在於,選擇排序尋找最大值時不存在元素之間的交換,但是氣泡排序如果一次迴圈中沒有進行交換,則證明集合已排好序;可以結束了。選擇排序每次迴圈必須比較完畢再能確定最大值。
插入排序
思想:每次,將乙個新的元素插入到已排好序的集合中
方法:將待插入元素從排好序的隊尾開始,逐一進行比較,待找到合適的位置,進行插入,比較的次數決定了該演算法的時間複雜度,最好情況下每次比較一次,為o(n),最壞情況下,每次插入需要與所有的元素進行比較,時間複雜度為乙個等差數列,複雜度o(n^2)
氣泡排序,選擇排序,插入排序
氣泡排序,選擇排序,插入排序 小規模的檔案以及基本有序的檔案,插入排序的效能比快速排序的效能更為有效一些,實際上,插入排序通常也做快速排序實現的一部分。1 氣泡排序 packagedatastrut public classbubblesort public voidinsert longvalue...
選擇排序 , 插入排序 , 氣泡排序
編寫 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為陣列長度 插入排序是從第二個元素開始快取,然後向前比較,...