選擇排序和冒泡排序(JAVA)

  1. 選擇排序
    從所有序列中先找到最小的,然後放到第一個位置。之後再看剩餘元素中最小的,放到第二個位置……以此類推,就可以完成整個的排序工作了
package sxd.learn.java;

/**
 * 
 * @author lab
 *
 */
public class SelectionSort {

    public static void main(String[] args) {
        int[] iArray = {0};
        selectionSort(iArray);
        for (int element : iArray) {
            System.out.print(element + " ");
        }
        System.out.println();
    }

    /**
     * 選擇排序
     * @param iArray
     */
    public static void selectionSort(int[] iArray){
        if(iArray.length == 0  || iArray.length == 1)
            return ;

        int min = 0;
        int index = 0;
        for (int i = 0; i < iArray.length; i++) {
            min = iArray[i];
            index = i;
            for (int j = i + 1; j < iArray.length; j++) {
                if(iArray[j] < min){
                    min = iArray[j];
                    index = j;
                }
                //交換兩個數的位置
            }
            exchange(iArray, i, index);
        }
    }
    /**
     * 交換兩個數
     */
    public static void exchange(int[] iArray, int i, int j){
        int temp = iArray[i];
        iArray[i] = iArray[j];
        iArray[j] = temp;
    }
}
  1. 冒泡排序
    冒泡排序就是比較相鄰的元素大小,將小的前移,大的後移,就像水中的氣泡一樣,最小的元素經過幾次移動,會最終浮到水面上。
package sxd.learn.java;

/**
 * 
 * @author lab
 *
 */
public class BubbleSort {

    public static void main(String[] args) {
        int[] iArray = {5, 3, 4, 8, 2, 1, 0, -2, -1};
        print(iArray);
        bubbleSort(iArray);
    }

    /**
     * 冒泡排序
     */
    public static void bubbleSort(int[] iArray){
        boolean exchange = false;

        if(iArray.length == 0 || iArray.length == 1)
            return ;
        for (int i = 0; i < iArray.length; i++) {
            exchange = false;
            for (int j = iArray.length - 1; j > i; j--) {
                if(iArray[j] < iArray[j - 1]){
                    exchange = true;
                    exchange(iArray, j, j - 1);
                }
            }
            print(iArray);
            if(!exchange)
                break;
        }
    }

    /**
     * 交換兩個數
     */
    public static void exchange(int[] iArray, int i, int j){
        int temp = iArray[i];
        iArray[i] = iArray[j];
        iArray[j] = temp;
    }

    public static void print(int[] iArray){
        for (int element : iArray) {
            System.out.print(element + " ");
        }
        System.out.println();
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章