zoukankan      html  css  js  c++  java
  • 直接选择排序----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));
    		  }
    	 }
    }	 
     


  • 相关阅读:
    MaxScript键盘控制盒子的移动
    MaxScript无需窗口的Timer
    Max用.Net的Dictionary将汉字转化为拼音
    关于技术美术的一些个人理解
    Max的工具部署与安装
    用以加强MaxScript的补充
    MaxScript 清除超出范围的关键帧
    Max2008之前版本旋转视图的函数
    面向对象设计的原则迪米特原则(转)
    LDAP资料
  • 原文地址:https://www.cnblogs.com/oversea201405/p/3766904.html
Copyright © 2011-2022 走看看