选择排序概念实例

实现一个方法,该方法的参数是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));
	}
	
	
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章