选择排序法
思想 第一次从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]交换;
与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]+" ");
}
}
日拱一卒百无有尽,功不唐捐终入海
浙公网安备 33010602011771号