Java自學-數組 排序

Java 數組選擇法,冒泡法排序

步驟 1 : 選擇法排序html

選擇法排序的思路:
把第一位和其餘全部的進行比較,只要比第一位小的,就換到第一個位置來
比較完後,第一位就是最小的
而後再從第二位和剩餘的其餘全部進行比較,只要比第二位小,就換到第二個位置來
比較完後,第二位就是第二小的
以此類推
選擇法排序java

public class HelloWorld {
    public static void main(String[] args) {
        int a [] = new int[]{18,62,68,82,65,9};
        //排序前,先把內容打印出來
        for (int i = 0; i < a.length; i++) {
            System.out.print(a[i] + " ");
        }
        System.out.println(" ");
        //選擇法排序
     
        //第一步: 把第一位和其餘全部位進行比較
        //若是發現其餘位置的數據比第一位小,就進行交換
         
        for (int i = 1; i < a.length; i++) {
            if(a[i]<a[0]){  
                int temp = a[0];
                a[0] = a[i];
                a[i] = temp;
            }
        }
        //把內容打印出來
        //能夠發現,最小的一個數,到了最前面
        for (int i = 0; i < a.length; i++) {
            System.out.print(a[i] + " ");
        }
        System.out.println(" ");
         
        //第二步: 把第二位的和剩下的全部位進行比較
        for (int i = 2; i < a.length; i++) {
            if(a[i]<a[1]){  
                int temp = a[1];
                a[1] = a[i];
                a[i] = temp;
            }
        }
        //把內容打印出來
        //能夠發現,倒數第二小的數,到了第二個位置
        for (int i = 0; i < a.length; i++) {
            System.out.print(a[i] + " ");
        }
        System.out.println(" ");       
         
        //能夠發現一個規律
        //移動的位置是從0 逐漸增長的
        //因此能夠在外面套一層循環
         
        for (int j = 0; j < a.length-1; j++) {
            for (int i = j+1; i < a.length; i++) {
                if(a[i]<a[j]){  
                    int temp = a[j];
                    a[j] = a[i];
                    a[i] = temp;
                }
            }
        }
         
        //把內容打印出來
        for (int i = 0; i < a.length; i++) {
            System.out.print(a[i] + " ");
        }
        System.out.println(" ");       
    }
}

步驟 2 : 冒泡法排序數組

冒泡法排序的思路:
第一步:從第一位開始,把相鄰兩位進行比較
若是發現前面的比後面的大,就把大的數據交換在後面,循環比較完畢後,最後一位就是最大的
第二步: 再來一次,只不過不用比較最後一位
以此類推
冒泡法排序code

public class HelloWorld {
    public static void main(String[] args) {
        int a [] = new int[]{18,62,68,82,65,9};
        //排序前,先把內容打印出來
        for (int i = 0; i < a.length; i++) {
            System.out.print(a[i] + " ");
        }
        System.out.println(" ");
        //冒泡法排序
      
        //第一步:從第一位開始,把相鄰兩位進行比較
        //若是發現前面的比後面的大,就把大的數據交換在後面
          
        for (int i = 0; i < a.length-1; i++) {
            if(a[i]>a[i+1]){  
                int temp = a[i];
                a[i] = a[i+1];
                a[i+1] = temp;
            }
        }
        //把內容打印出來
        //能夠發現,最大的到了最後面
        for (int i = 0; i < a.length; i++) {
            System.out.print(a[i] + " ");
        }
        System.out.println(" ");
          
        //第二步: 再來一次,只不過不用比較最後一位
        for (int i = 0; i < a.length-2; i++) {
            if(a[i]>a[i+1]){  
                int temp = a[i];
                a[i] = a[i+1];
                a[i+1] = temp;
            }
        }
        //把內容打印出來
        //能夠發現,倒數第二大的到了倒數第二個位置
        for (int i = 0; i < a.length; i++) {
            System.out.print(a[i] + " ");
        }
        System.out.println(" ");       
          
        //能夠發現一個規律
        //後邊界在收縮
        //因此能夠在外面套一層循環
          
        for (int j = 0; j < a.length; j++) {
            for (int i = 0; i < a.length-j-1; i++) {
                if(a[i]>a[i+1]){  
                    int temp = a[i];
                    a[i] = a[i+1];
                    a[i+1] = temp;
                }
            }
        }
          
        //把內容打印出來
        for (int i = 0; i < a.length; i++) {
            System.out.print(a[i] + " ");
        }
        System.out.println(" ");       
    }
}

練習排序htm

(首先建立一個長度是5的數組,並填充隨機數。blog

首先用選擇法正排序,而後再對其使用冒泡法倒排序排序

注 所謂的正排序就是從小到大排序,倒排序就是從大到小排序)
練習-排序get

相關文章
相關標籤/搜索