選擇排序概念實例

實現一個方法,該方法的參數是int[],該方法可以對數組進行排序,例如使用【選擇排序】,該方法不需要返回值。

	2 1 4 9 8 5 3

	規則:每一輪在待排序的區域中比較找到一個最小值後,把這個最小值放到已經排好順序的區域的末尾,剩下的部分成一個新的待排序部分,重複上面的步驟直到排序結束。

	2 1 4 9 8 5 3

	第一輪從待排序區中找到一個最小值,然後和第一個位置的數字交互位置
		1 2 4 9 8 5 3 

	第二輪從新的待排序區中找到一個最小值,然後和第二個位置的數字交互位置
		1 2 4 9 8 5 3 

	第三輪從新的待排序區中找到一個最小值,然後和第三個位置的數字交互位置
		1 2 3 9 8 5 4 

	第四輪從新的待排序區中找到一個最小值,然後和第四個位置的數字交互位置
		1 2 3 4 8 5 9 
	
	第五輪從新的待排序區中找到一個最小值,然後和第五個位置的數字交互位置
		1 2 3 4 5 8 9 

	第六輪從新的待排序區中找到一個最小值,然後和第六個位置的數字交互位置
		1 2 3 4 5 8 9 


	注意,操作的核心目標:
		1.每輪找到的最小值應該存放的下標位置是什麼
		2.每輪找到的最小值現在的下標位置是什麼
		3.找到之後,讓這倆個位置的值進行交互就可以了

在這裏插入圖片描述

package com.briup.day1;

import java.util.Arrays;

/**
 * 
 * @author Xuan
 * */

public class Selection {
	//1 2 5 4
	public static void main(String[] args) {
		int [] a ={1,15,2,3,5,9,8};
		
		for(int i=0;i<a.length-1;i++) {
			int min = i;//剛進入循環時把數組第一位默認爲最小值下標
			int temp;
			for(int j=min;j<a.length;j++) {
				//從最小值下標開始依次比較取到最小值
				//並記錄最小值的下標
				if(a[j]<a[min]) {
					min=j;
				}
			}
			if(i!=min) { //進行交換最小值下標後,如果彼此下標不相等就交換數字
				temp=a[min];
				a[min]=a[i];
				a[i]=temp;
			
			}
		}	
		System.out.println(Arrays.toString(a));
	}
	
	
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章