package com.jlz.java;
import java.util.ArrayList;
import java.util.ListIterator;
/**
*
* @author Jlzlight
<strong><span style="font-size:18px;color:#ff0000;">冒泡排序算法思想:比較相鄰兩個元素的大小,若不符合條件交換位置, 在比較下一對,直到最後一對,就可以找到最大(小)的元素
* 下一趟去掉已經找到的元素,依次比較相鄰的元素,重複以上步驟</span></strong>
*/
public class Bubble_Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
// 初始化列表
ArrayList<Object> arrayList = new ArrayList<Object>();
arrayList.add(60);
arrayList.add(55);
arrayList.add(48);
arrayList.add(90);
arrayList.add(36);
// 顯示列表元素
Show(arrayList);
// 選擇排序函數
Bubble(arrayList);
}
private static void Bubble(ArrayList<Object> arrayList) {
// TODO Auto-generated method stub
// 比較size()-1次,最後一個元素不需要比較
for (int i = 1; i < arrayList.size(); i++) {
// 最後一個元素不用與後面的元素比較(其實後面沒有了)
for (int j = 0; j < arrayList.size() - 1; j++) {
if ((Integer) arrayList.get(j) < (Integer) arrayList.get(j + 1)) {
// 相鄰元素,交換位置
Object object = arrayList.get(j);
arrayList.set(j, arrayList.get(j + 1));
arrayList.set(j + 1, object);
}
}
Show(arrayList);
}
}
// 顯示列表元素
public static void Show(ArrayList<Object> arrayList) {
// 運用迭代遍歷,也可以直接遍歷
ListIterator<Object> listIterator = arrayList.listIterator();
while (listIterator.hasNext()) {
System.out.print(" " + listIterator.next());
}
// 換行函數
Println();
}
// 換行
public static void Println() {
System.out.println();
}
}
排序結果
初始數據 60 55 48 90 36
第一趟排序結果:60 55 90 48 36
第二趟排序結果:60 90 55 48 36
第三趟排序結果:90 60 55 48 36
第四趟排序結果:90 60 55 48 36