氣泡排序
public
static
void
sortcompare()
;/** 要遍歷的次數
* 第一輪:43521比四次
* 第二輪:45321比三次
* 第三輪:45321比兩次
* 第四輪:54321比一次
*/for(
int i =
0; i < arr.length-
1; i++)}
}for
(int count:arr)
}
選擇排序public
static
void
select()
;//待排序的數列
/* *根據下標去找,每次找出最大或最小得乙個
* 1,5,3,4,5,9
* 1,3,5,4,5,9
* 1,3,4,5,5,9
* ...
* 1,3,4,5,5,9
*///定義乙個變數用於接受最小值的下標
int minindex =0;
for(
int i =
0;i//判斷得到的最小值下表是不是它本身,是的話就不需要調換位置,否則
if(minindex!=i)
}for
(int count: arr)
}
冒泡,選擇排序的對比
氣泡排序
選擇排序
比較相鄰位置的兩個數
按順序比較,找最大值或者最小值
每一輪比較後,位置不對都需要換位置
每一輪比較都只需要換一次位置
通過數去找位置
給定位置去找數
氣泡排序優缺點:優點:比較簡單,空間複雜度較低,是穩定的;
缺點:時間複雜度太高,效率慢;
選擇排序優缺點:優點:一輪比較只需要換一次位置;
缺點:效率慢,不穩定
不穩定性
演算法的穩定性定義為,對於待排序列中相同項的原來次序不能被演算法改變則稱該演算法穩定.
如當前的陣列1,(5),,3,4,9
當我們利用直接選擇排序演算法進行排序時候,(5)和後面的調換,(5)就跑到了的後面了,原來的次序改變了,這樣就不穩定了.而氣泡排序就不會這樣,(5)和後面的比較時,就會進行下一步排序動作,兩個的位置是不會改變的。
選擇排序與氣泡排序
今早心血來潮,又想看看氣泡排序.於是乎度娘一番,找到了度娘給我的這篇文章,前面的文字描述還是簡單易懂的,可惜給出的 示範有些文不對題.於是乎又wiki一番.發現上文給出的 形似選擇排序,於是總結如下 我們假設有乙個陣列 624159 對應的索引也就是 0 5,如果我想描述第二個位置,也就是數字2的位...
選擇排序與氣泡排序
選擇排序 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 氣泡排序的原理是對陣列多次掃瞄,每次掃瞄都對相鄰的兩個元素的順序進行調整。假設我們按公升序排列陣列,那麼相鄰兩個元素中如果左邊的元素大於右邊的元素,就交換這兩個元素位置,否則不交...