數據結構排序之選擇排序

package com.jlz.java;

import java.util.*;

/**
 * 
 * @author Jlzlight <strong><span style="font-size:18px;color:#ff0000;">選擇排序算法思想:每次尋找相對於後面未排序的最小元素,置換前面的相對位置元素</span></strong>
 */

public class Select_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);
		// 選擇排序函數
		Select(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();
	}

	// 選擇排序函數
	public static void Select(ArrayList<Object> arrayList) {
		for (int i = 0; i < arrayList.size(); i++) {
			int min = i;
			// 尋找相對於後面最小的元素的下標
			for (int j = i + 1; j < arrayList.size(); j++) {
				if ((Integer) arrayList.get(min) > (Integer) arrayList.get(j))
					min = j;
			}
			// 交換元素
			Object e = arrayList.get(i);
			arrayList.set(i, arrayList.get(min));
			arrayList.set(min, e);

			Show(arrayList);
		}
	}
}

  初始化數據:                60 55 48 90 36
  第一趟找最小的元素:36 55 48 90 60
  第二趟找最小的元素:36 48 55 90 60
  第三趟找最小的元素:36 48 55 90 60
  第四趟找最小的元素:36 48 55 60 90
  第五趟找最小的元素:36 48 55 60 90

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