1. 程式人生 > >三位數排序,陣列排序

三位數排序,陣列排序

三位數簡單排序

給三位數進行排序,三位數排序應該是很簡單的,還是用了一天多的時間,總共掌握了兩種方法,一種是簡單的常規排序,就是每個數都比較一次,然後寫出結果,以下是第一種方法:

public class Count {
    /**
     * 給出三位數,進行三位數排序
     * 
     * @param args
     */

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        int a = 100;
        int
b = 93; int c = 56; if(a>=b) { int temp=a; a=b; b=temp; } if(a>=c) { int temp=a; a=c; c=temp; } if(b>=c) { int temp=b; b=c; c=temp; } System.out.println(a + "\n"
+ b + "\n" + c); } }

此假設的邏輯是假設a是最大的,a和其他數一一比較,則設定a為臨時變數temp,通過相等的方式,把temp賦值給比較的數字,其他數值依此論推;
若是要倒序,則把“>”改為“<”;

四位數排序

用這種方法也可以比較四位數的,只是,缺點是數字越多,比較起來越麻煩

public class Count1 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        // 給出一個四位數,進行排序
/** * 注意:複製過程中,要改引數,不該引數,就會出問題,我就是沒改引數費了好大的力氣,以為方法有問題 * */ int a = 5; int b = 6; int c = 2; int d = 4; if (a >= b) { int temp = a; a = b; b = temp; } if (a >= c) { int temp = a; a = c; c = temp; } if (a >= d) { int temp = a; a = d; d = temp; } if (b >= c) { int temp = b; b = c; c = temp; } if (b >= d) { int temp = b; b = d; d = temp; } if (c >= d) { int temp = c; c = d; d = temp; } System.out.println(a + "\n" + b + "\n" + c + "\n" + d); } }

陣列排序、氣泡排序

相比於常規方法,資料排序/氣泡排序簡單,理解卻很有難度,以下是程式碼,感受下

public class Array {

/**
 * 給出一個數組,進行數組裡面的值進行排序
 * 
 * @param args
 */

public static void main(String[] args) {

    int array[] = { 26, 12, 67, 45, 89, 32 };

    for (int i = 0; i <array.length; i++) {
        for (int j = 0; j <array.length - i - 1; j++) {
            if (array[j] >= array[j + 1]) {
                int temp = array[j + 1];
                array[j + 1] = array[j];
                array[j] = temp;

            }
        }

    }

    for (int x : array) {
        System.out.println(x);
    }
}

}

第一個for定義的是數的長度
第二個for定義的陣列排序的位置,怎麼理解這句話,從下面的if可以看出來:

if (array[j] >= array[j + 1]) {
                    int temp = array[j + 1];
                    array[j + 1] = array[j];
                    array[j] = temp;

假設一組數的長度[ 26, 12, 67, 45, 89, 32 ],那麼,前面的數比後面的數大,則向後移,後面的往前移,我覺得這個表示式要表達的就是這麼個結果,如果對於普通表示式有所理解,賦值變數這方面也就理解了

難點在於對“j