氣泡排序 時間複雜度 o(n2)
實 質: 把小(大)的元素往前(後)調
氣泡排序演算法的原理如下:
比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。
對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。
針對所有的元素重複以上的步驟,除了最後乙個。
持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。
演算法穩定性:
氣泡排序就是把小的元素往前調或者把大的元素往後調。
比較是相鄰的兩個元素比較,交換也發生在這兩個元素之間。
所以,如果兩個元素相等,是不會再交換的;
如果兩個相等的元素沒有相鄰,那麼即使通過前面的兩兩交換把兩個相鄰起來,
這時候也不會交換,所以相同元素的前後順序並沒有改變,所以氣泡排序是一種穩定排序演算法。
public class bubblesort}}
//這一版**做了小小的改動,利用布林變數issorted作為標記。
如果在本輪排序中,元 素有交換,則說明數列無序;
如果沒有元素交換,說明數列已然有序,直接跳出大迴圈。
for (int i = 0; i array[j+1])
}if (issorted)
}這一版**中,sortborder就是無序數列的邊界。每一輪排序過程中,
sortborder之後的元素就完全不需要比較了,肯定是有序的
int tmp = 0;
//記錄最後一次交換的位置
int lastexchangeindex = 0;
//無序數列的邊界,每次比較只需要比到這裡為止
int sortborder = array.length - 1;
for (int i = 0; i < array.length; i++)
}sortborder = lastexchangeindex;
if (issorted) }}
}public class test ;
//降序
bubblesort.budesc(array);
system.out.println(arrays.tostring(array));
//公升序
// bubblesort.busort(array);
// system.out.println(arrays.tostring(array));
}}
std sort 公升序 ? 降序
std sort 這個函式,大家知道用,而且入可以 使用乙個自定義的元素對比函式。比較鬱悶的是,老是忘了 這個函式返回 true 對排序結果的影響 公升序還是降序 於是用gtest 寫了一段 測試 將就些看吧 class handhogrecord chips type bet boolorderb...
C sort 排序(降序 公升序)使用總結
c sort 函式十分方便,可以對內建型別也可對自定義型別進行快速排序,內建型別的使用比較簡單,下面主要討論自定義型別的排序,一般有如下幾種使用方法 比如,我們現有一批學生,要根據他們的成績進行公升序排序,成績如果相等則根據名字公升序排序,那麼我們可以如下操作 struct student bool...
排序箭頭,公升序,降序簡單實現
css不好實現的效果,通過背景來彌補。預設 銷量新品 效果有了,剩下的就是通過js邏輯和程式邏輯來實現排序了。html改造 預設 sortedascsorteddescsorted data type sale role columnheader tabindex 0 aria controls s...