數據結構排序之冒泡排序

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

發佈了39 篇原創文章 · 獲贊 16 · 訪問量 9271
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章