天天看點

排序程式設計

package com.zsw.sort;

/**
 * 排序程式設計
 * 請說出3中常見的排序方法,并使用任意一種方法編寫排序函數
 * 1.冒泡排序
 * 2.選擇排序
 * 3.插入排序
 * @author zsw
 */
public class MySort {

  /**
   * 選擇排序
   * @param number
   */
  public static void selectionSort(int[] number){
    for(int i =0;i<number.length-1;i++){
      int m = i;
      for(int j = i+1;j<number.length;j++){
        if(number[j]<number[m])
          m = j;
      }
      if(i!=m)
        swap(number, i, m);
    }
  }
  
  
  /**
   * 插入排序
   * @param number
   */
  public static void injectionSort(int[] number){
    for(int j = 1;j<number.length;j++){
      int tmp = number[j];
      int i = j-1;
      while(tmp<number[i]){
        number[i+1] = number[i];
        i--;
        if(i==-1){
          break;
        }
      }
      number[i+1] = tmp;
    }
  }
  
  /*
   * 冒泡排序
   */
  public static void bubbleSort(int[] number){
    boolean flag = true;
    for(int i = 0;i<number.length-1 && flag;i++){
      flag = false;
      for (int j = 0; j < number.length-1-i; j++) {
        if(number[j+1]<number[j]){
          swap(number, j+1,j);
          flag = true;
        }
      }
    }
  }
  
  private static void swap(int[] number,int i,int j){
    int t;
    t = number[i];
    number[i] = number[j];
    number[j] = t;
  }
  
  public static void main(String[] args) {
    int [] number = {1,6,3,4,7,8,11};
//    bubbleSort(number);
//    selectionSort(number);
    injectionSort(number);
    for(int i =0;i<number.length;i++){
      System.out.println(number[i]);
    }
  }

}