1. 程式人生 > >java簡單實現冒泡、快速、選擇、插入排序演算法

java簡單實現冒泡、快速、選擇、插入排序演算法

程式主要實現了氣泡排序、快速排序、選擇排序、插入排序演算法
資料類Data.java
排序演算法類SortMethods.java
主類Main.java
示例程式:
資料類Data.java

package callclasstestoop;

public class Data {
    public int[] dataArray(){
        int[] data = new int[]{2, 1, 6,88,43,21,90,31,5,18};
        return data;
    }
}

排序演算法類SortMethods.java

package callclasstestoop;
/**
 * 排序tool類
 * @author gt.liu
 * time 2016年10月12日 上午10:17:48
 * TestJava callclasstestoop SortMethods.java
 */
public class SortMethods { public SortMethods() { // TODO Auto-generated constructor stub System.out.println("==呼叫SortMethods類,這是構造方法=="); System.out.println("=========呼叫排序演算法類後========"); } // 排序演算法實現 // 氣泡排序演算法 public void maoPaoSort(int[] array) { System.out.println("**********氣泡排序演算法*********"
); System.out.println("public void maoPaoSort(int[] array){...}"); int temp; for (int i = 0; i < array.length - 1; i++) { for (int j = i + 1; j < array.length; j++) { if (array[i] > array[j]) { temp = array[i]; array
[i] = array[j]; array[j] = temp; } } } } //快速排序演算法***使用分治策略把一個序列分為兩個序列 public void kuaiSuSort(int[] array, int start, int end) { //System.out.println("==========快速排序演算法=========");//由於遞迴呼叫注掉 if (start < end) { int base = array[start];// 選定基準值(第一個值作為基準值) //int temp;// 交換臨時值 int i = start; int j = end; while(i < j){ while(i<j && array[j] > base){ j--; } if(i<j){ array[i] = array[j]; i++; } while(i<j && array[i] < base){ i++; } if(i<j){ array[j]=array[i]; j--; } array[i] = base; } kuaiSuSort(array, start, i - 1); kuaiSuSort(array, i + 1, end); } }//kuaiSuSort(){...} over //選擇排序演算法***每次尋找最小(大)的值放在最末尾的位置 public void xuanZeSort(int[] array){ System.out.println("**********選擇排序演算法**********"); int temp; for(int i = 0; i < array.length; i++){ int flag = i; for(int j = i+1; j < array.length; j++){ if(array[flag] > array[j]){ flag = j; } } temp = array[i]; array[i] = array[flag]; array[flag] = temp; } }//xuanZeSort(){...} over //插入排序演算法 public void chaRuSort(int[] array){ System.out.println("**********插入排序演算法**********"); int temp; int j; for(int i = 1; i < array.length; i++){ temp = array[i]; for(j = i; j > 0 && temp < array[j-1]; j--){ array[j] = array[j-1]; } array[j] = temp; } } }

主類Main.java

package callclasstestoop;
/**
 * 主類Main
 * @author gt.liu
 * time 2016年10月12日 上午10:17:26
 * TestJava callclasstestoop Main.java
 */
public class Main {
    public static void main(String[] args) {
        //資料載入
        Data array = new Data();//Data類
        int[] arrayData = array.dataArray();
        //資料輸出測試
        System.out.println("陣列長度:" + arrayData.length);
        System.out.println("==========原始陣列============");
        for(int i = 0; i < arrayData.length; i++){
            System.out.print(arrayData[i] + "\t");
        }
        System.out.println("\n===========================");

        //排序演算法類載入
        SortMethods sort = new SortMethods();//SortMethods類
        //sort.maoPaoSort(arrayData);//呼叫sort中的氣泡排序演算法
        //呼叫sort中的快速排序演算法
        //System.out.println("**********快速排序演算法**********");
        //sort.kuaiSuSort(arrayData, 0, arrayData.length-1);
        //sort.xuanZeSort(arrayData);//呼叫sort中的選擇排序演算法
        sort.chaRuSort(arrayData);//呼叫sort中的插入排序演算法



        //輸出排序結果
        System.out.println("==========排序後資料===========");
        for(int i = 0; i < arrayData.length; i++){
            System.out.print(arrayData[i] + "\t");
        }
        System.out.println("\n===========================");
    }
}