一.什么叫冒泡排序法慢显?
?比較相鄰的元素,如果第一個(gè)比第二個(gè)大,就交換他們兩個(gè)的位置欠啤,然后繼續(xù)往下找
二.兩種冒泡排序法步驟:
對(duì)下列數(shù)組進(jìn)行排序:(22,3,6,54,86,21,35,1,65,4)
1.普通的冒泡排序法:
實(shí)現(xiàn)步驟:
1:雙層for循環(huán)嵌套荚藻;
2.判斷條件如果滿足,交換兩數(shù)位置洁段;
public class BubbleSort {
public static void main(String[] args) {
int a[]={22,3,6,54,86,21,35,1,65,4};
for(int i= 0 ;i<a.length;i++){ //第一層循環(huán)
for(int j=0;j<a.length-i-1;j++){ //第二層循環(huán)
if(a[j]>a[j+1]){
//交換位置
int tem =a[j];
a[j]=a[j+1];
a[j+1]=tem;
}
}
}
System.out.println("排好序:");
for(int aa:a){
System.out.print(aa+" ");
}
}
}
結(jié)果展示:
雙層for循環(huán)實(shí)現(xiàn)冒泡排序法
2.單個(gè)for循環(huán)實(shí)現(xiàn)冒泡排序法:
???a.)定義待排序數(shù)組及數(shù)組相關(guān)長(zhǎng)度
int a[]={22,3,6,54,86,21,35,1,65,4};
int team=a.length-1;
b.)排序?qū)崿F(xiàn):
1.單個(gè)for循環(huán)应狱;
2. 判斷是否應(yīng)該交換位置;
for(int i= 0 ;i<team;i++){
if(a[i]>a[i+1]){
int tem =a[i];
a[i]=a[i+1];
a[i+1]=tem;
}
}
3. 判斷該趟for循環(huán)是否結(jié)束祠丝;
4. 若該趟for循環(huán)結(jié)束將給i賦值-1疾呻,并且將team的長(zhǎng)度減1,繼續(xù)下趟循環(huán);
if(i==team-1){
i=-1;
team--;
}
c.)完整程序:
//單個(gè)for循環(huán)的冒泡排序法
public class BubbleSort {
public static void main(String[] args) {
int a[]={22,3,6,54,86,21,35,1,65,4};
int team=a.length-1;
for(int i= 0 ;i<team;i++){
if(a[i]>a[i+1]){
int tem =a[i];
a[i]=a[i+1];
a[i+1]=tem;
}
if(i==team-1){
i=-1;
team--;
}
}
System.out.println("排好序:");
for(int aa:a){
System.out.print(aa+" ");
}
}
}
結(jié)果展示:
單個(gè)for循環(huán)實(shí)現(xiàn)冒泡排序