選擇排序和插入排序

壹頁書發表於2016-09-02

  1. public class Sort{
  2.     public static void main(String[] args){
  3.         Integer[] data={3,2,9,8,7,10};
  4.         BaseSort s=new Insertion();

  5.         s.sort(data);

  6.         System.out.println(s.isSorted(data));
  7.     }
  8. }

  9. //插入排序
  10. class Insertion extends BaseSort{

  11.     @Override
  12.     void sort(Comparable[] data) {
  13.         int length=data.length;
  14.         for(int i=1;i<length;i++){
  15.             this.show(data);
  16.             for(int j=i;j>0 && less(data[j],data[j-1]);j--)
  17.             {
  18.                 exch(data,j,j-1);
  19.             }
  20.         }
  21.     }
  22. }

  23. //選擇排序
  24. class Selection extends BaseSort{
  25.     @Override
  26.     void sort(Comparable[] data) {
  27.         int length=data.length;
  28.         for(int i=0;i<length;i++){

  29.             this.show(data);
  30.             int min=i;
  31.             for(int j=i+1;j<length;j++)
  32.             {
  33.                 if(less(data[j],data[min])) {
  34.                     min = j;
  35.                 }
  36.             }
  37.             exch(data,i,min);
  38.         }
  39.     }
  40. }


  41. abstract class BaseSort {
  42.     abstract void sort(Comparable[] data);
  43.     //比較
  44.     public boolean less(Comparable v,Comparable w){
  45.         return v.compareTo(w)<0;
  46.     }

  47.     //交換
  48.     public void exch(Comparable[] data,int i,int j){
  49.         Comparable t=data[i];
  50.         data[i]=data[j];
  51.         data[j]=t;
  52.     }

  53.     //列印
  54.     public void show(Comparable[] data){
  55.         for(int i=0;i<data.length;i++){
  56.             System.out.print(data[i]+" ");
  57.         }
  58.         System.out.println("");
  59.     }

  60.     //驗證
  61.     public boolean isSorted(Comparable[] data){
  62.         for(int i=1;i< data.length;i++){
  63.             if(less(data[i],data[i-1]) )
  64.                 return false;
  65.         }
  66.         return true;
  67.     }
  68. }

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29254281/viewspace-2124415/,如需轉載,請註明出處,否則將追究法律責任。

相關文章