中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java數組常用排序算法實例小結

發布時間:2020-09-09 21:21:44 來源:腳本之家 閱讀:184 作者:xxiaowen 欄目:編程語言

本文實例講述了Java數組常用排序算法。分享給大家供大家參考,具體如下:

1、冒泡排序法

SortArray_01.java

public class SortArray_01 {
    public static void main(String args[]) {
        int[] array = { 14, 5, 86, 4, 12, 3, 21, 13, 11, 2, 55, 66, 22 };
        // 創建一個初始化的一維數組array
        System.out.println("未排序的數組:");
        for (int i = 0; i < array.length; i++) {
            // 遍歷array數組中的元素
            System.out.print(" " + array[i]);
            // 輸出數組元素
            if ((i + 1) % 5 == 0)
                // 每5個元素一行
                System.out.println();
        }
        int mid; // 定義一個中間變量,起到臨時存儲數據的作用
        for (int i = 0; i < array.length; i++) {
            // 執行冒泡排序法
            for (int j = i; j < array.length; j++) {
                if (array[j] < array[i]) {
                    mid = array[i];
                    array[i] = array[j];
                    array[j] = mid;
                }
            }
        }
        System.out.println("\n使用冒泡法排序后的數組:");
        for (int i = 0; i < array.length; i++) {
            // 遍歷排好序的array數組中的元素
            System.out.print(" " + array[i]);
            // 輸出數組元素
            if ((i + 1) % 5 == 0)
                System.out.println();
            // 每5個元素一行
        }
    }
}

運行結果:

未排序的數組:
 14 5 86 4 12
 3 21 13 11 2
 55 66 22
使用冒泡法排序后的數組:
 2 3 4 5 11
 12 13 14 21 22
 55 66 86

2、數組遞增排序

SortArray_02.java

import java.util.Arrays;
import java.util.Random;
public class SortArray_02 {
    public static void main(String[] args) {
        Random rd = new Random();
        int[] array = new int[15];
        // 聲明數組
        System.out.println("沒有使用sort方法前的數組:");
        for (int i = 0; i < array.length; i++) {
            // 利用隨機數隨意產生15個0~20之間的隨機數
            array[i] = rd.nextInt(20);
            // 給array數組賦值
            System.out.print(" " + array[i]);
            if ((i + 1) % 5 == 0)
                System.out.println();
        }
        Arrays.sort(array);
        // 對array數組進行升序排序
        System.out.println("\n使用sort方法后的數組:");
        for (int i = 0; i < array.length; i++) {
            // 將array數組中的數據輸出
            System.out.print(" " + array[i]);
            if ((i + 1) % 5 == 0)
                System.out.println();
        }
    }
}

運行結果:

沒有使用sort方法前的數組:
 13 12 11 18 11
 11 17 13 11 8
 1 0 9 18 3

使用sort方法后的數組:
 0 1 3 8 9
 11 11 11 11 12
 13 13 17 18 18

3、快速排序法

SortArray_03.java

public class SortArray_03 {
    public static void main(String args[]) {
        int[] intArray = { 12, 11, 45, 6, 8, 43, 40, 57, 3, 20, 15, 88, 23 };
        System.out.println("排序前的數組:");
        for (int i = 0; i < intArray.length; i++) {
            System.out.print(" " + intArray[i]);
            // 輸出數組元素
            if ((i + 1) % 5 == 0)
                // 每5個元素一行
                System.out.println();
        }
        System.out.println();
        int[] b = quickSort(intArray, 0, intArray.length - 1);
        // 調用quickSort
        System.out.println("使用快迅排序法后的數組:");
        for (int i = 0; i < b.length; i++) {
            System.out.print(" " + b[i]);
            if ((i + 1) % 5 == 0)
                // 每5個元素一行
                System.out.println();
        }
    }
    public static int getMiddle(int[] array, int left, int right) {
        int temp;
        // 進行一趟快速排序,返回中心點位置
        int mid = array[left];
        // 把中心置于a[0]
        while (left < right) {
            while (left < right && array[right] >= mid)
                right--;
            temp = array[right];
            // 將比中心點小的數據移動到左邊
            array[right] = array[left];
            array[left] = temp;
            while (left < right && array[left] <= mid)
                left++;
            temp = array[right];
            // 將比中心點大的數據移動到右邊
            array[right] = array[left];
            array[left] = temp;
        }
        array[left] = mid;
        // 中心移到正確位置
        return left; // 返回中心點
    }
    public static int[] quickSort(int[] array, int left, int right) {// 快速排序法
        if (left < right - 1) {
            // 如果開始點和結點沒有重疊的時候,也就是指針沒有執行到結尾
            int mid = getMiddle(array, left, right);
            // 重新獲取中間點
            quickSort(array, left, mid - 1);
            quickSort(array, mid + 1, right);
        }
        return array;
    }
}

運行結果:

排序前的數組:
 12 11 45 6 8
 43 40 57 3 20
 15 88 23
使用快迅排序法后的數組:
 3 6 8 11 12
 20 15 23 40 43
 45 88 57

4、選擇排序法

SortArray_04.java

public class SortArray_04 {
    public static void main(String args[]) {
        int[] array = { 14, 5, 86, 4, 12, 3, 51, 13, 11, 2, 32, 6, 45, 34 };
        // 創建一個初始化的一維數組array
        int keyValue; // 表示最小的元素值
        int index; // 表示最小的元素值的下標
        int temp; // 中間變量
        System.out.println("未排序的數組:");
        for (int i = 0; i < array.length; i++) {
            // 遍歷array數組中的元素
            System.out.print(" " + array[i]);
            // 輸出數組元素
            if ((i + 1) % 5 == 0)
                // 每5個元素一行
                System.out.println();
        }
        for (int i = 0; i < array.length; i++) {
            // 使用選擇排序法的核心
            index = i;
            keyValue = array[i];
            for (int j = i; j < array.length; j++)
                if (array[j] < keyValue) {
                    index = j;
                    keyValue = array[j];
                }
            temp = array[i];
            array[i] = array[index];
            array[index] = temp;
        }
        System.out.println("\n使用選擇排序法后的數組:");
        for (int i = 0; i < array.length; i++) {
            // 遍歷排好序的array數組中的元素
            System.out.print(" " + array[i]);
            // 輸出數組元素
            if ((i + 1) % 5 == 0)
                System.out.println();
            // 每5個元素一行
        }
    }
}

運行結果:

未排序的數組:
 14 5 86 4 12
 3 51 13 11 2
 32 6 45 34
使用選擇排序法后的數組:
 2 3 4 5 6
 11 12 13 14 32
 34 45 51 86

PS:這里再為大家推薦一款關于排序的演示工具供大家參考:

在線動畫演示插入/選擇/冒泡/歸并/希爾/快速排序算法過程工具:
http://tools.jb51.net/aideddesign/paixu_ys

更多關于java算法相關內容感興趣的讀者可查看本站專題:《Java數據結構與算法教程》、《Java操作DOM節點技巧總結》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》

希望本文所述對大家java程序設計有所幫助。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

松滋市| 葵青区| 沛县| 遵义市| 明水县| 黔江区| 永州市| 汝阳县| 简阳市| 清远市| 门头沟区| 名山县| 连江县| 贵港市| 邯郸县| 安宁市| 东港市| 东安县| 科技| 兴安盟| 铜鼓县| 桐梓县| 保山市| 绥宁县| 镇远县| 古蔺县| 衡阳县| 东莞市| 丰顺县| 望奎县| 延川县| 贵阳市| 五大连池市| 五河县| 兴城市| 勐海县| 华安县| 祥云县| 开鲁县| 蓬溪县| 天水市|