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

来源:互联网 发布:activex控件编程 编辑:程序博客网 时间:2024/05/02 04:53

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

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));  } }}  


0 0
原创粉丝点击