1. 程式人生 > >陣列的常見排序演算法--氣泡排序,選擇排序

陣列的常見排序演算法--氣泡排序,選擇排序

陣列的排序演算法--氣泡排序,選擇排序


程式設計中,我們會經常用到陣列的排序,方便統計和查詢。當然面試的時候也會經常問到
下面是兩種比較常見的排序。

1.氣泡排序

基本思想

比較相鄰的兩個值,如果滿足條件就交換值,把小的值移到陣列前面,大的移動到後面

演算法實現

public class ArraySortBubble {
    public
static void main(String[] args) { int[] array = new int[]{5,10,20,7,100,50,33,25}; //建立陣列 System.out.println("排序前輸出:"+Arrays.toString(array)); sort(array);//呼叫排序演算法 System.out.println("排序後輸出:"+Arrays.toString(array)); } /** * 氣泡排序演算法 * @param array * @return */
public static int[] sort(int[] array){ for (int i = 0;i < array.length-1;i++) { for (int j = 0;j < array.length-1-i;j++) { //比較相鄰兩個元素值,較大的值往後冒泡 if (array[j] > array[j+1]) { int temp = array[j]; //把第一個值儲存到臨時變數中 array[
j] = array[j+1]; //把第二個值覆蓋第一個值 array[j+1] = temp; //把臨時變數覆蓋第二個值 } } } return array; } }

輸出結果:
輸出結果:

2.選擇排序演算法

基本思想

將指定排序位置與其他陣列元素分別對比,滿足條件就交換元素值,每次比較選擇出最大(或者最小)的元素,直到全部排序完成。

演算法實現

public class ArraySelectSort {
    public static void main(String[] args) {
        int[] array = {5,2,38,69,27,66,11,19,25};
        System.out.println("選擇排序前:"+ Arrays.toString(array));
        sort(array);
        System.out.println("選擇排序後:"+ Arrays.toString(array));
    }

    /**
     * 直接選擇排序
     * @param array 要排序的陣列
     * @return
     */
    public static int[] sort(int[] array){
        int index;
        for (int i = 1;i < array.length;i++) {
            index = 0;
            for (int j = 1; j <= array.length - i;j++) {
                if (array[j] > array[index]) {  //選擇出陣列中最大值的索引座標
                    index = j;
                }
            }
            //交換在位置array.length-1和index(最大值)上的兩個數
            int temp = array[array.length - i];     //最後一個元素值儲存到臨時變數
            array[array.length - i] = array[index]; //將大的元素值往後移
            array[index] = temp;                    //臨時變數複製到交換的變數
        }
        return array;
    }
}

輸出結果:
輸出結果:

Fighting for a better tomorrow!