选择排序

选择排序

思路

1.一开始的时候,整个数组是无序的,我们遍历数组找到最小的值,将这个最小的值放到它应该放的位置也就是a[0]
2.接着我们再从a[1]到a[n]中继续遍历找到最小的值,并将它放到正确的地方a[1]
3.这样a[0],a[1]就是有序的了
4.我们在循环这样的过程从a[i]-a[n]中找到最小的值,放到a[i]位置,使得前i个元素有序
5.直到整个数组是有序的

代码

package sort;

public class SelectSort {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[] arr= {7,6,5,4,3,2,1};
		SelectSort(arr);
		for(int i=0;i<arr.length;i++) {
			System.out.printf("%d ",arr[i]);
		}
		System.out.println();
	}
	
	public static void SelectSort(int[] a) {
		int minIndex=0;//最小值的下标
		int min=0;//最小值
		int len=a.length;//获取a的长度
		for(int i=0;i<len-1;i++) {
			min=a[i];//假设a[i]为[i,len)的中的最小值
			minIndex=i;//最小下标为i
			for(int j=i+1;j<len;j++) {
				if(a[j]<a[minIndex]) {//在[i,len)中寻找最小值
					minIndex=j;//如果有比假设最小值更加小的值就刷新下标和值
					min=a[j];
				}
				int temp=a[i];//将找到的最小值放到对应正确的位置
				a[i]=a[minIndex];
				a[minIndex]=temp;
			}
		}
	}

}
原文地址:https://www.cnblogs.com/mengxiaoleng/p/11663812.html