国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > Java > 正文

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

2024-07-13 10:15:07
字體:
供稿:網(wǎng)友

本文實例講述了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)建一個初始化的一維數(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個元素一行                System.out.println();        }        int mid; // 定義一個中間變量,起到臨時存儲數(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個元素一行        }    }}

運行結(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++) {            // 利用隨機數(shù)隨意產(chǎn)生15個0~20之間的隨機數(shù)            array[i] = rd.nextInt(20);            // 給array數(shù)組賦值            System.out.print(" " + array[i]);            if ((i + 1) % 5 == 0)                System.out.println();        }        Arrays.sort(array);        // 對array數(shù)組進行升序排序        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();        }    }}

運行結(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個元素一行                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個元素一行                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];            // 將比中心點小的數(shù)據(jù)移動到左邊            array[right] = array[left];            array[left] = temp;            while (left < right && array[left] <= mid)                left++;            temp = array[right];            // 將比中心點大的數(shù)據(jù)移動到右邊            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) {            // 如果開始點和結(jié)點沒有重疊的時候,也就是指針沒有執(zhí)行到結(jié)尾            int mid = getMiddle(array, left, right);            // 重新獲取中間點            quickSort(array, left, mid - 1);            quickSort(array, mid + 1, right);        }        return array;    }}

運行結(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)建一個初始化的一維數(shù)組array        int keyValue; // 表示最小的元素值        int index; // 表示最小的元素值的下標        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個元素一行                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個元素一行        }    }}

運行結(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

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


注:相關(guān)教程知識閱讀請移步到JAVA教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 交口县| 富顺县| 阜南县| 扬中市| 湟中县| 越西县| 建昌县| 前郭尔| 新化县| 扬中市| 沂水县| 宽甸| 闸北区| 浪卡子县| 惠东县| 宣化县| 河西区| 铜梁县| 惠州市| 阿坝县| 灌云县| 丁青县| 洞头县| 始兴县| 奉节县| 蒲城县| 安图县| 巴彦县| 石河子市| 鹤壁市| 裕民县| 开阳县| 凤台县| 余江县| 饶河县| 嘉鱼县| 重庆市| 临澧县| 维西| 石家庄市| 清苑县|