选择排序法

思想 第一次从arr[0]到arr[n-1]中得到最小值,与arr[0]交换;第二次从arr[1]到arr[n-1]得到最小值,
与arr[1]交换;第n-1次从R[n-2]-R[n-1]中选取最小值,与R[n-2]交换;

总共通过n-1次,得到一个按排序码从小到大排列的有序序列

具体代码:

public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		int Size=20;
		//int arr[]={5,3,11,9};
		int arr[]=new int[Size];
		for(int i=0;i<arr.length;i++)
		{
			arr[i]=(int) (Math.random()*100);
		}
		Select select=new Select();
		select.sort(arr);		
	}
}
class Select
{
	public void sort(int arr[])
	{
		//思想 第一次从arr[0]到arr[n-1]中得到最小值,与arr[0]交换;第二次从arr[1]到arr[n-1]得到最小值,
		//与arr[1]交换;第n-1次从R[n-2]-R[n-1]中选取最小值,与R[n-2]交换;
		//总共通过n-1次,得到一个按排序码从小到大排列的有序序列
		
		for(int i=0;i<arr.length;i++)//遍历数组长度
		{
			//假定arr[i]数最小 ,并记录下标
			int min=arr[i];
			int minindex=i;
			//从arr[i]下一个数开始遍历
			for(int j=i+1;j<arr.length;j++)
			{
				if(min>arr[j])
				{
					//得到最小值
					min=arr[j];
					minindex=j;
				}
			}
			//交换位置
			int temp=0;
			temp=arr[i];
			arr[i]=arr[minindex];
			arr[minindex]=temp;
		}
		//重新排序
		for(int i=0;i<arr.length;i++)
		{
			System.out.print(arr[i]+" ");
		}
	}


posted @ 2015-10-13 14:52  稻香鱼  阅读(106)  评论(0)    收藏  举报