原理:
兩個數比較大小,較大的數往後移動,較小的數往前移動
演算法描述:
比較相鄰的元素。若第乙個數比第二個大,就交換它們兩個;
對每一對相鄰元素做比較操作,從開始第一對到結尾的最後一對,這樣在最後的元素應該會是最大的數;
針對所有的元素重複以上的步驟,除了最後乙個;
重複步驟1~3,直到排序完成。
**實現:
public
static
void
main
(string[
] args)
; system.out.
println
("陣列a為:");
system.out.
println
(arrays.
tostring
(a))
;for
(int i=
0;i1;i++)}
} system.out.
println
("經過氣泡排序後的陣列a為:");
system.out.
println
(arrays.
tostring
(a))
;}
原理:
首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。
**實現:
public
static
void
main
(string[
] args)
; system.out.
println
("陣列a為:");
system.out.
println
(arrays.
tostring
(a))
;//方法一:(缺點)交換次數多
// for (int i=0;i< a.length-1;i++)
// }
// }
// system.out.println(arrays.tostring(a));
//方法二:(每一輪比較只交換一次元素)
for(
int i=
0;i1;i++)}
int temp=a[i]
; a[i]
=a[minindex]
; a[minindex]
=temp;
} system.out.
println
("經過選擇排序後的陣列a為:");
system.out.
println
(arrays.
tostring
(a))
;}
原理:
在要排序的一組陣列中,假定前n-1個數已經排好序,現在將第n個數插到前面的有序陣列中,使得這n個數也是排好順序的。如此反覆迴圈,直到全部排好順序。
演算法描述:
從第乙個元素開始,該元素可以認為已經被排序;
取出下乙個元素,在已經排序的元素序列中從後向前掃瞄;
如果該元素(已排序)大於新元素,將該元素移到下一位置;
重複步驟3,直到找到已排序的元素小於或者等於新元素的位置;
將新元素插入到該位置後;
重複步驟2~5。
**實現:
public
static
void
main
(string[
] args)
;// for (int i = 0; i < a.length; i++)
// }
// }
// system.out.println(arrays.tostring(a));
//方法二:
int[
] a=
; system.out.
println
("陣列a為:");
system.out.
println
(arrays.
tostring
(a))
;int current;
//當前的,現在的
for(
int i=
0;i1;i++
) a[preindex+1]
=current;
//把當前元素插入到比較元素的位置
} system.out.
println
("經過選擇排序後的陣列a為:");
system.out.
println
(arrays.
tostring
(a))
;}
排序 排序演算法1
所謂氣泡排序就是,一組資料,以遞增的順序來說明,從第乙個數data 0 開始,依次和後面的資料比較大小,如果data 0 大於當前位置上的數就和這個數交換位置並繼續和後面的數相比,如果遇到比自己大的數了,就不交換 下一次開始的位置是data 1 然後依次往後推。void myswap int num...
排序演算法 1 選擇排序演算法
這篇部落格分為兩個部分 選擇排序演算法基本思想 實現與解析 由於這個排序演算法比較簡單,因此這篇博文就不做過多解釋了 一.選擇排序演算法基本思想 1 選擇排序 小到大排序 1.遍歷所有未排序的元素 找到最小的那個元素 2.將這個元素與未排序序列的第乙個元素交換位置 3.當剩下乙個元素時 排序結束 o...
排序演算法 1
二 高階排序演算法 高階排序演算法中我們將只介紹這一種,同時也是目前我所知道 我看過的資料中 的最快的。它的工作看起來仍然象乙個二叉樹。首先我們選擇乙個中間值middle程式中我們使用陣列中間值,然後 把比它小的放在左邊,大的放在右邊 具體的實現是從兩邊找,找到一對後交換 然後對兩邊分別使 用這個過...