今早心血來潮,又想看看氣泡排序...
於是乎度娘一番,找到了度娘給我的這篇文章,前面的文字描述還是簡單易懂的,可惜給出的**示範有些文不對題.
於是乎又wiki一番..發現上文給出的**形似選擇排序,於是總結如下:
我們假設有乙個陣列: 624159
對應的索引也就是:0-->5,如果我想描述第二個位置,也就是數字2的位置,我就用index[1]來描述.
氣泡排序的對比方法是:先比較62,發現6比較大,所以就把6移動到index[1]的位置上,然後比較index[1]和index[2],發現還是6大,就把6移動到index[2]...依次類推,最後發現9是最大的.至此第一輪對比排序完成,開始第二輪,第二輪對比時會放棄最大的數,也就是最後乙個,對比的原則和上面一樣,最終最大的數字就像氣泡一樣,乙個乙個冒出來了...
而選擇排序的方法是:先比較62,發現6比較大,於是把2移動到index[0],然後對比index[0]和index[2],發現還是2小,所以不移動,然後對比index[0]和index[3],發現1小,所以將1移動到index[0]...依此類推,最終index[0]是最小的數,然後下次對比從index[1]開始,與除了index[0]這個數字之外的對比,把最小的放在index[1]...
綜上可以發現,關鍵在於冒泡是對比相鄰的,把最大或最小的推出來.而選擇是選中乙個數,挨個對比,把最大或最小的拿過來...
參考**如下:
/**
* @param args
*/public static void main(string args) ;
for(int xx:x)
system.out.println();
int ***x = sortit2(x);
for(int ***:***x) }
//選擇
private static int sortit(int unsorted)}}
return unsorted; }
//冒泡
private static int sortit2(int number) //if end
}} return number;
}
參考文獻
:
排序 氣泡排序與選擇排序
最近複習大學學過的演算法,這裡做個筆記。排序,我們學過 這裡需要了解什麼是時間複雜度,什麼是空間複雜度。簡單而言,時間複雜度指執行的次數,空間複雜度指消耗的記憶體。它重複地走訪過要排序的元素列,依次比較兩個相鄰的元素,如果順序 如從大到小 首字母從z到a 錯誤就把他們交換過來。走訪元素的工作是重複地...
選擇排序與氣泡排序
選擇排序 static void sort1 int arr var temp arr i arr i arr min arr min temp 氣泡排序 static void sort2 int arr static void main string args sort1 arr foreach...
氣泡排序與選擇排序
氣泡排序 bubble sort 輸入 亂序n長陣列 輸出 排序好的n長陣列 時間複雜度 o n 2 空間複雜度 o 1 氣泡排序的原理是對陣列多次掃瞄,每次掃瞄都對相鄰的兩個元素的順序進行調整。假設我們按公升序排列陣列,那麼相鄰兩個元素中如果左邊的元素大於右邊的元素,就交換這兩個元素位置,否則不交...