Java八大排序---选择排序

选择排序:
是从预排序的数据中,按指定的规则选出某一元素,再依规定交换位置达到排序的目的
基本思想:
假设一个数组大小为n的数组,第一次从arr[0]-arr[n-1]中选取最小值,与arr[0]交换,第二次从arr[1]-arr[n-1]中选取最小值,与arr[1]交换,以此类推,第n-1次从arr[n-2]-arr[n-1]中选取最小值,与arr[n-2]交换,总共进行n-1次,得到一个按排序码从小到大排列的有序序列。

动态图解:
在这里插入图片描述Java代码实现:

  import java.util.Scanner;

public class Select_sort {

//基本思想:在要排序的一组数中,选出最小的一个数与第一个位置的数交换,
//然后在剩下的数当中再找出最小的与第二个位置的数交换,如此循环到倒数第二个数与最后一个数比较为止
	
/*	选择排序
	在未排序序列中找到最小的元素,存放到排序序列的起始位置
	再从剩余未排序元素中继续寻找最小的元素,然后放到排序序列的末尾
	以此类推,直到所有的元素排序完毕
*/	
	
public static void main(String[] args) {
	// TODO Auto-generated method stub
	System.out.println("请输入数组的大小:");
	Scanner input = new Scanner(System.in);
	int a = input.nextInt();
	int [] arr = new int[a];
	for(int i = 0;i<arr.length;i++) {
		System.out.println("请输入数组的第"+i+"个值:");
		int s = input.nextInt();
		arr[i] = s;
	}
	arr = SelectSort(arr);
	for(int i = 0;i<arr.length;i++)
	System.out.print(" "+arr[i]+" ");
}
public static int[] SelectSort(int[] number) {
	int size = number.length;
	int temp = 0;
	for(int i = 0;i<size;i++) {
		int k = i;//待确定的位置
		//选择应该在第i个位置的数
		for(int j = size-1;j>i;j--) {
			//从未排序中找到最小的
			if(number[j]<number[k])
				//将每次找到的小的值赋给待确定的位置k
				k = j;
		}
		//交换俩个数
		temp = number[i];
		number[i] = number[k];
		number[k] = temp;
	}
	return number;
}
}
发布了40 篇原创文章 · 获赞 2 · 访问量 3403

猜你喜欢

转载自blog.csdn.net/BEYONDmonster/article/details/100822138