欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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("沒(méi)有使用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é)果:

沒(méi)有使用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) {
            // 如果開(kāi)始點(diǎn)和結(jié)點(diǎn)沒(méi)有重疊的時(shí)候,也就是指針沒(méi)有執(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)畫(huà)演示插入/選擇/冒泡/歸并/希爾/快速排序算法過(guò)程工具:
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)文章

  • JSqlParse完整介紹

    JSqlParse完整介紹

    JSqlParse是一款很精簡(jiǎn)的sql解析工具,本文主要介紹了JSqlParse完整介紹,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-05-05
  • Java中ArrayList與順序表的概念與使用實(shí)例

    Java中ArrayList與順序表的概念與使用實(shí)例

    順序表是指用一組地址連續(xù)的存儲(chǔ)單元依次存儲(chǔ)各個(gè)元素,使得在邏輯結(jié)構(gòu)上相鄰的數(shù)據(jù)元素存儲(chǔ)在相鄰的物理存儲(chǔ)單元中的線性表,下面這篇文章主要介紹了Java?ArrayList與順序表的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • Java 判斷實(shí)體對(duì)象及所有屬性是否為空的操作

    Java 判斷實(shí)體對(duì)象及所有屬性是否為空的操作

    這篇文章主要介紹了Java 判斷實(shí)體對(duì)象及所有屬性是否為空的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • MybatisPlus查詢數(shù)據(jù)日期格式化問(wèn)題解決方法

    MybatisPlus查詢數(shù)據(jù)日期格式化問(wèn)題解決方法

    MyBatisPlus是MyBatis的增強(qiáng)工具,支持常規(guī)的CRUD操作以及復(fù)雜的聯(lián)表查詢等功能,這篇文章主要給大家介紹了關(guān)于MybatisPlus查詢數(shù)據(jù)日期格式化問(wèn)題的解決方法,需要的朋友可以參考下
    2023-10-10
  • Java Hibernate中的持久化類和實(shí)體類關(guān)系

    Java Hibernate中的持久化類和實(shí)體類關(guān)系

    Hibernate是一種Java對(duì)象關(guān)系映射框架,通過(guò)持久化類將Java對(duì)象映射到數(shù)據(jù)庫(kù)表中。持久化類需要實(shí)現(xiàn)無(wú)參構(gòu)造器、具有標(biāo)識(shí)屬性和使用注解或XML進(jìn)行映射。Hibernate通過(guò)Session來(lái)管理對(duì)象的狀態(tài),包括臨時(shí)狀態(tài)、持久化狀態(tài)和游離狀態(tài)
    2023-04-04
  • java實(shí)現(xiàn)猜拳小游戲

    java實(shí)現(xiàn)猜拳小游戲

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)猜拳小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-01-01
  • springboot?集成activemq項(xiàng)目配置方法

    springboot?集成activemq項(xiàng)目配置方法

    這篇文章主要介紹了springboot?集成activemq項(xiàng)目配置方法,e-car項(xiàng)目配置通過(guò)引入activemq依賴,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-04-04
  • java servlet 幾種頁(yè)面跳轉(zhuǎn)的方法

    java servlet 幾種頁(yè)面跳轉(zhuǎn)的方法

    java servlet 幾種頁(yè)面跳轉(zhuǎn)的方法,需要的朋友可以參考一下
    2013-04-04
  • Java中JS引擎實(shí)現(xiàn)的一句話木馬

    Java中JS引擎實(shí)現(xiàn)的一句話木馬

    這篇文章主要為大家介紹了如何利用Java中JS引擎實(shí)現(xiàn)的一句話木馬,有需要的朋友可以借鑒參考下,希望能夠有所幫助祝大家多多進(jìn)步
    2022-02-02
  • 淺析Jmeter多用戶token使用問(wèn)題

    淺析Jmeter多用戶token使用問(wèn)題

    這篇文章主要介紹了Jmeter多用戶token使用問(wèn)題,通過(guò)具體的例子給大家介紹了Jmeter多用戶token使用場(chǎng)景接口分析,需要的朋友可以參考下
    2021-10-10

最新評(píng)論