选择排序算法

来源:互联网 发布:找工作哪个软件好 编辑:程序博客网 时间:2024/04/30 12:54

选择排序算法

思想:将整个数组分成已排(左边)和待排(右边)两个部分,开始时已排部分为空,数组的所有成员均属于待排部分。排序时,每次在待排部分寻找最小的值,并将它与待排部分最左边的一个值交换,然后已排部分向右扩充一个成员。这样,已排部分逐步扩大,待排部分逐步缩小,直到待排部分只剩下一个成员为止。

 

 
  1. import java.util.*;
  2. public class SelectionSort{
  3.   public void SelectionSorting(Comparable[] arr){
  4.     int left,right,p;
  5.     Comparable temp;
  6.     left=0;
  7.     right=arr.length-1;
  8.     for(int i=left;i<right;i++){
  9.       p=i;
  10.       temp=arr[i];
  11.       for(int j=i+1;j<=right;j++){
  12.         if(arr[j].compareTo(arr[p])<0)
  13.           p=j;
  14.       }
  15.       if(p!=i){
  16.         arr[i]=arr[p];
  17.     arr[p]=temp;
  18.       }
  19.     }
  20.   }
  21.   public void PrintArr(Comparable[] arr){
  22.     for(int i=0;i<arr.length;i++)
  23.       System.out.println(arr[i]);
  24.   }
  25.   public static void main(String[] args){
  26.     Animal[] cArr=new Animal[]{new Animal("dog"),new Animal("cat"),
  27.                         new Animal("rat"),new Animal("pig"),new Animal("fox")
  28.                         ,new Animal("eel"),new Animal("ant"),new Animal("hen")
  29.                         ,new Animal("bat")};
  30.     SelectionSort ss=new SelectionSort();
  31.     ss.SelectionSorting(cArr);
  32.     ss.PrintArr(cArr);
  33.   }
  34. }
  35. class Animal implements Comparable{
  36.   String name;
  37.   public Animal(String s){
  38.     name=s;
  39.   }
  40.   //public Animal(int iNa){
  41.    // name=iNa;
  42.   //}
  43.   public int compareTo(Object o){
  44.     if(name.compareTo(((Animal)o).getName())>0)
  45.       return 1;
  46.     else if(name.compareTo(((Animal)o).getName())==0)
  47.       return 0;
  48.     else 
  49.       return -1;
  50.   }
  51.   public String getName(){
  52.     return name;
  53.   }
  54.   public String toString(){
  55.     return (String)name;
  56.   }
  57. }
 
原创粉丝点击