直接选择排序----java实现

直接选择排序思路: 从待排序数据中选择第一个假定为最小的下标,然后他后面的与他循环比较,得到真的最小值下标,然后最小值前的那一区段依次后移,并把最小值赋值给第一个元素。第二次时,假定第二个为最小,然后他后面的与他循环比较(这样就不会比较到已最小的第一个)。。。。。

package com.sheepmu.text;

import java.util.Arrays;
import java.util.Comparator;
  /*   
  * @author sheepmu
  */ 
public class Sort {
	 public static void main(String[] args){
		 int[] arr={64,5,7,89,6,24};
		  
		 selectSort(arr);
//		 System.out.println(Arrays.toString(arr));
	 }	 	 
	 public static  void selectSort(int[] arr){
		 int len=arr.length;
		 int small=0;//一次比较中最小的下标。
		 int temp=0;
		  for(int i=0;i<len-1;i++){
			  small=i;
			  System.out.println("small--设--->"+small);
			  for(int j=i+1;j<len;j++) //把假定最小下标后的下标的值与该值循环比较,找出最小下标
				  if(arr[j]<arr[small])
					  small=j;
			  System.out.println("small---真-->"+small); 
			  if(i!=small){
//				  temp=arr[i];//直接交换可能会导致相同的数据元素位置发生变化,引起排序不稳定。
//				  arr[i]=arr[small];
//				  arr[small]=temp;
				  temp=arr[small];//!!因为下面移动了,所以若果不先把这个值取出来下面那个arr[small](先temp取代)就不是找出来的那个咯。
				  for(int k=small;k>i;k--)//把该区段未排序元素顺序后移
					  arr[k]=arr[k-1];
				  arr[i]=temp;
			  }
			  System.out.println(Arrays.toString(arr));
		  }
	 }
}	 
 


posted @ 2014-03-26 16:18  IT专业户  阅读(620)  评论(0编辑  收藏  举报