最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java數(shù)組常用排序算法實(shí)例小結(jié)

 更新時(shí)間:2017年12月21日 08:54:19   作者:xxiaowen  
這篇文章主要介紹了Java數(shù)組常用排序算法,結(jié)合實(shí)例形式總結(jié)分析了java數(shù)組常用的4種排序算法,包括冒泡排序、數(shù)組遞增排序、快速排序及選擇排序,需要的朋友可以參考下

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

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 };
        // 創(chuàng)建一個(gè)初始化的一維數(shù)組array
        System.out.println("未排序的數(shù)組:");
        for (int i = 0; i < array.length; i++) {
            // 遍歷array數(shù)組中的元素
            System.out.print(" " + array[i]);
            // 輸出數(shù)組元素
            if ((i + 1) % 5 == 0)
                // 每5個(gè)元素一行
                System.out.println();
        }
        int mid; // 定義一個(gè)中間變量,起到臨時(shí)存儲(chǔ)數(shù)據(jù)的作用
        for (int i = 0; i < array.length; i++) {
            // 執(zhí)行冒泡排序法
            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使用冒泡法排序后的數(shù)組:");
        for (int i = 0; i < array.length; i++) {
            // 遍歷排好序的array數(shù)組中的元素
            System.out.print(" " + array[i]);
            // 輸出數(shù)組元素
            if ((i + 1) % 5 == 0)
                System.out.println();
            // 每5個(gè)元素一行
        }
    }
}

運(yùn)行結(jié)果:

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

2、數(shù)組遞增排序

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];
        // 聲明數(shù)組
        System.out.println("沒有使用sort方法前的數(shù)組:");
        for (int i = 0; i < array.length; i++) {
            // 利用隨機(jī)數(shù)隨意產(chǎn)生15個(gè)0~20之間的隨機(jī)數(shù)
            array[i] = rd.nextInt(20);
            // 給array數(shù)組賦值
            System.out.print(" " + array[i]);
            if ((i + 1) % 5 == 0)
                System.out.println();
        }
        Arrays.sort(array);
        // 對(duì)array數(shù)組進(jìn)行升序排序
        System.out.println("\n使用sort方法后的數(shù)組:");
        for (int i = 0; i < array.length; i++) {
            // 將array數(shù)組中的數(shù)據(jù)輸出
            System.out.print(" " + array[i]);
            if ((i + 1) % 5 == 0)
                System.out.println();
        }
    }
}

運(yùn)行結(jié)果:

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

使用sort方法后的數(shù)組:
 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("排序前的數(shù)組:");
        for (int i = 0; i < intArray.length; i++) {
            System.out.print(" " + intArray[i]);
            // 輸出數(shù)組元素
            if ((i + 1) % 5 == 0)
                // 每5個(gè)元素一行
                System.out.println();
        }
        System.out.println();
        int[] b = quickSort(intArray, 0, intArray.length - 1);
        // 調(diào)用quickSort
        System.out.println("使用快迅排序法后的數(shù)組:");
        for (int i = 0; i < b.length; i++) {
            System.out.print(" " + b[i]);
            if ((i + 1) % 5 == 0)
                // 每5個(gè)元素一行
                System.out.println();
        }
    }
    public static int getMiddle(int[] array, int left, int right) {
        int temp;
        // 進(jìn)行一趟快速排序,返回中心點(diǎn)位置
        int mid = array[left];
        // 把中心置于a[0]
        while (left < right) {
            while (left < right && array[right] >= mid)
                right--;
            temp = array[right];
            // 將比中心點(diǎn)小的數(shù)據(jù)移動(dòng)到左邊
            array[right] = array[left];
            array[left] = temp;
            while (left < right && array[left] <= mid)
                left++;
            temp = array[right];
            // 將比中心點(diǎn)大的數(shù)據(jù)移動(dòng)到右邊
            array[right] = array[left];
            array[left] = temp;
        }
        array[left] = mid;
        // 中心移到正確位置
        return left; // 返回中心點(diǎn)
    }
    public static int[] quickSort(int[] array, int left, int right) {// 快速排序法
        if (left < right - 1) {
            // 如果開始點(diǎn)和結(jié)點(diǎn)沒有重疊的時(shí)候,也就是指針沒有執(zhí)行到結(jié)尾
            int mid = getMiddle(array, left, right);
            // 重新獲取中間點(diǎn)
            quickSort(array, left, mid - 1);
            quickSort(array, mid + 1, right);
        }
        return array;
    }
}

運(yùn)行結(jié)果:

排序前的數(shù)組:
 12 11 45 6 8
 43 40 57 3 20
 15 88 23
使用快迅排序法后的數(shù)組:
 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 };
        // 創(chuàng)建一個(gè)初始化的一維數(shù)組array
        int keyValue; // 表示最小的元素值
        int index; // 表示最小的元素值的下標(biāo)
        int temp; // 中間變量
        System.out.println("未排序的數(shù)組:");
        for (int i = 0; i < array.length; i++) {
            // 遍歷array數(shù)組中的元素
            System.out.print(" " + array[i]);
            // 輸出數(shù)組元素
            if ((i + 1) % 5 == 0)
                // 每5個(gè)元素一行
                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使用選擇排序法后的數(shù)組:");
        for (int i = 0; i < array.length; i++) {
            // 遍歷排好序的array數(shù)組中的元素
            System.out.print(" " + array[i]);
            // 輸出數(shù)組元素
            if ((i + 1) % 5 == 0)
                System.out.println();
            // 每5個(gè)元素一行
        }
    }
}

運(yùn)行結(jié)果:

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

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

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

更多關(guān)于java算法相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總

希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • 10分鐘帶你理解Java中的反射

    10分鐘帶你理解Java中的反射

    反射是java中一種強(qiáng)大的工具,能夠使我們很方便的創(chuàng)建靈活的代碼,這篇文章帶大家十分鐘快速理解Java中的反射,有需要的可以參考借鑒。
    2016-08-08
  • SpringCloud?Gateway中GatewayFilterChain執(zhí)行流程詳解

    SpringCloud?Gateway中GatewayFilterChain執(zhí)行流程詳解

    Spring?Cloud?Gateway旨在為微服務(wù)架構(gòu)提供一種簡(jiǎn)單有效的、統(tǒng)一的?API?路由管理方式。Spring?Cloud?Gateway?作為?Spring?Cloud?生態(tài)系中的網(wǎng)關(guān),它不僅提供統(tǒng)一的路由方式,并且基于?Filter?鏈的方式提供了網(wǎng)關(guān)基本的功能,例如:安全、監(jiān)控/埋點(diǎn)和限流等
    2022-10-10
  • SpringBoot多線程與任務(wù)調(diào)度總結(jié)

    SpringBoot多線程與任務(wù)調(diào)度總結(jié)

    多線程與任務(wù)調(diào)度是java開發(fā)中必須掌握的技能,本文主要介紹了SpringBoot多線程與任務(wù)調(diào)度總結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-12-12
  • Java中Maven的打包方式和執(zhí)行jar詳解

    Java中Maven的打包方式和執(zhí)行jar詳解

    這篇文章主要介紹了Java中maven的打包方式和執(zhí)行jar,文中有詳細(xì)的代碼示例,有需要的朋友可以借鑒一下
    2023-04-04
  • java的socket請(qǐng)求和響應(yīng)方式

    java的socket請(qǐng)求和響應(yīng)方式

    這篇文章主要介紹了java的socket請(qǐng)求和響應(yīng)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • 使用SpringBoot AOP 記錄操作日志、異常日志的過程

    使用SpringBoot AOP 記錄操作日志、異常日志的過程

    這篇文章主要介紹了使用SpringBoot AOP 記錄操作日志、異常日志的過程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-05-05
  • IDEA編寫SpringBoot項(xiàng)目時(shí)使用Lombok報(bào)錯(cuò)“找不到符號(hào)”的原因和解決

    IDEA編寫SpringBoot項(xiàng)目時(shí)使用Lombok報(bào)錯(cuò)“找不到符號(hào)”的原因和解決

    本文主要介紹了IDEA編寫SpringBoot項(xiàng)目時(shí)使用Lombok報(bào)錯(cuò)“找不到符號(hào)”,詳細(xì)介紹了幾種可能會(huì)出現(xiàn)的問題及其解決方法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-03-03
  • Java 詳解垃圾回收與對(duì)象生命周期

    Java 詳解垃圾回收與對(duì)象生命周期

    這篇文章主要介紹了Java 詳解垃圾回收與對(duì)象生命周期的相關(guān)資料,這里對(duì)堆內(nèi)存與棧內(nèi)存進(jìn)行詳解及JVM 的生命周期介紹,需要的朋友可以參考下
    2017-01-01
  • Java打印斐波那契前N項(xiàng)的實(shí)現(xiàn)示例

    Java打印斐波那契前N項(xiàng)的實(shí)現(xiàn)示例

    這篇文章主要介紹了Java打印斐波那契前N項(xiàng)的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • SpringBoot使用hutool操作FTP的詳細(xì)過程

    SpringBoot使用hutool操作FTP的詳細(xì)過程

    在使用SpringBoot結(jié)合hutool操作FTP時(shí),遇到防火墻導(dǎo)致上傳文件大小為0kb的問題,通過設(shè)置FTP為被動(dòng)模式解決,本文詳細(xì)解析了FTP的主動(dòng)模式和被動(dòng)模式的工作原理、安全性及適用場(chǎng)景,幫助理解FTP的連接方式和解決網(wǎng)絡(luò)限制問題
    2024-09-09

最新評(píng)論

防城港市| 昌平区| 杭锦后旗| 蕲春县| 开鲁县| 安阳县| 辽阳市| 潜山县| 漯河市| 四川省| 河源市| 雅安市| 礼泉县| 开鲁县| 天祝| 饶阳县| 抚松县| 佳木斯市| 民权县| 广饶县| 汉川市| 顺昌县| 栾川县| 张家港市| 读书| 化州市| 七台河市| 嵩明县| 磴口县| 肃宁县| 永登县| 开封县| 广安市| 兰考县| 仁寿县| 三都| 攀枝花市| 天台县| 达日县| 桦南县| 泌阳县|