OJ題之氣泡排序
Description
實現氣泡排序。
Input
輸入的每一行表示一個元素為正整數的陣列,所有值用空格隔開,第一個值為數值長度,其餘為陣列元素值。
Output
輸出的每一行為排序結果,用空格隔開,末尾不要空格。
Solution?
import java.util.Scanner;
public class ojtest1_21{
static void swap(int[] a,int i,int j){
int temp=a[i];
a[i]=a[j];
a[j]=temp;
}
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
while(scanner.hasNext()) {
int n = scanner.nextInt();
int[] a=new int[n];
//儲存到陣列中
for(int i=0;i<n;i++)
a[i]=scanner.nextInt();
//氣泡排序
for(int i=0;i<n;i++){//一共要進行i輪
for(int j=0;j<n-1-i;j++) {
if(a[j]>a[j+1])
swap(a,j,j+1);
}
}
for(int i=0;i<n;i++) {
if(i==n-1)
System.out.print(a[i]);
else
System.out.print(a[i]+" ");
}
}
}
}
Review?
複習氣泡排序。N個元素排序,需要進行N趟。在每趟裡,相鄰的元素之間相互比較,因為此題要求的是遞增,如果左元素比右元素大,則交換二者的位置,然後繼續將右元素與其右邊的元素進行比較。以[10,1,35,61,89,55]作為例子展示,共7個元素待排序,因此共有7趟,具體每趟的結果如下:
以第1趟排序為舉例展示氣泡排序過程:
第一趟的氣泡排序過程展示 | 結果 |
---|---|
第1次排序:10和1比較,10大於1,交換位置 | [1,10,35,61,89,36,55] |
第2次排序:10和35比較,10小於35,不交換位置 | [1,10,35,61,89,36,55] |
第3次排序:35和61比較,35小於61,不交換位置 | [1,10,35,61,89,36,55] |
第4次排序:61和89比較,61小於89,不交換位置 | [1,10,35,61,89,36,55] |
第5次排序:89和36比較,89大於36,交換位置 | [1,10,35,61,36,89,55] |
第6次排序:89和55比較,89大於55,交換位置 | [1,10,35,61,36,55,89] |
55比較,89大於55,交換位置 | [1,10,35,61,36,55,89] |
相關文章
- 排序之氣泡排序排序
- 基本排序之氣泡排序排序
- 氣泡排序(機試題)排序
- 排序——氣泡排序排序
- 氣泡排序排序
- 9. 氣泡排序,以及如何優化氣泡排序,氣泡排序屬於插入排序排序優化
- Java排序演算法之氣泡排序Java排序演算法
- 排序:氣泡排序&快速排序排序
- js氣泡排序JS排序
- 氣泡排序-fusha排序
- 氣泡排序演示排序
- Shell氣泡排序排序
- d氣泡排序排序
- 氣泡排序正解排序
- JavaScript氣泡排序JavaScript排序
- java氣泡排序Java排序
- 氣泡排序 java排序Java
- php氣泡排序PHP排序
- Java 氣泡排序Java排序
- Javascript 氣泡排序JavaScript排序
- 氣泡排序(Java)排序Java
- 容器氣泡排序排序
- 氣泡排序1排序
- 氣泡排序法排序
- 排序:交換排序——氣泡排序法排序
- 死磕演算法之氣泡排序演算法排序
- 氣泡排序筆記排序筆記
- js氣泡排序動畫JS排序動畫
- 陣列氣泡排序陣列排序
- 淺析氣泡排序排序
- python氣泡排序Python排序
- 氣泡排序 bubble sort排序
- 【筆記】氣泡排序筆記排序
- 淺談氣泡排序排序
- 氣泡排序文法排序
- 19_氣泡排序排序
- Python 氣泡排序Python排序
- 函式氣泡排序函式排序