《Java数据结构和算法》简单排序选择排序

排序从球员队列最左边0开始,记录下最左边队员身高,与下一个队员比较,如果这个队员比最左边的矮,替换刚才的最矮记录,再向右比较过程中不断更新最矮记录,最后得到最矮队员的下标,将他与最左边的队员交换;之后,从最左+1号队员开始以同样的过程比较,得到次矮队员的下标,将其与最左+1号交换……

public void selectSort(){
   int out,in,min;

 /*外层循环用循环变量out,从数组开头0开始向高位增长,内层循环用in,从out开始右移*/
 
  for(out=0;out<nElems;out++){
   min = out;
   for(in=out+1;in<nElems;in++)
    if(a[in]<a[min])
    
     min = in;//记录下最小值
  
   swap(out,min);//交换out和min指向的数据项
  }
 }
 package Structure;

class ArraySel{
 private long[] a;
 private int nElems;
 
 public ArraySel(int max){
  a = new long[max];
  nElems = 0;
 }
 public void insert(long value){
  a[nElems] = value;
  nElems++;
 }
 public void display(){
  for(int j=0;j<nElems;j++){
   System.out.print(a[j]+" ");
  }
 }
 public void selectSort(){
  int out,in,min;
  for(out=0;out<nElems;out++){
   min = out;
   for(in=out+1;in<nElems;in++)
    if(a[in]<a[min])
     min = in;
   swap(out,min);
  }
 }
 private void swap(int one,int two){
  long temp = a[one];
  a[one] = a[two];
  a[two] = temp;
 }
 
}
public class selectSort {
 public static void main(String[] args){
  int maxSize = 100;
  ArraySel arr;
  arr = new ArraySel(maxSize);
  
  arr.insert(12);
  arr.insert(102);
  arr.insert(112);
  arr.insert(212);
  arr.insert(312);
  arr.insert(412);
  arr.insert(512);
  arr.insert(122);
  arr.insert(132);
  arr.insert(152);
  
  arr.display();
  arr.selectSort();
  System.out.println("");
  arr.display();
 }
 
}
/*12 102 112 212 312 412 512 122 132 152 
  12 102 112 122 132 152 212 312 412 512 */

 

你可能感兴趣的:(《Java数据结构和算法》简单排序选择排序)