激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java數組常用排序算法實例小結

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

2021-03-08 13:25xxiaowen Java教程

這篇文章主要介紹了Java數組常用排序算法,結合實例形式總結分析了java數組常用的4種排序算法,包括冒泡排序、數組遞增排序、快速排序及選擇排序,需要的朋友可以參考下

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

1、冒泡排序法

SortArray_01.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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個元素一行
        }
    }
}

運行結果:

?
1
2
3
4
5
6
7
8
未排序的數組:
 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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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();
        }
    }
}

運行結果:

?
1
2
3
4
5
6
7
8
9
沒有使用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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
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;
    }
}

運行結果:

?
1
2
3
4
5
6
7
8
排序前的數組:
 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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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個元素一行
        }
    }
}

運行結果:

?
1
2
3
4
5
6
7
8
未排序的數組:
 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

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

原文鏈接:http://blog.csdn.net/wenzhilanyu2012/article/details/8735670

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 色吧久久 | 成人国产精品齐天大性 | 国产欧美日韩免费 | 国产羞羞视频在线免费观看 | 91九色福利 | 日本网站一区 | 中文字幕在线资源 | 国产在线观看免费视频软件 | 自拍偷拍999| 国产精品久久久久久婷婷天堂 | 久久影片 | 国产成人精品免费视频大全最热 | 午夜视频免费播放 | 日本视频在线播放 | 一级黄色毛片a | 国产91九色 | 亚洲一区二区三区在线免费观看 | 成人小视频免费在线观看 | 欧美一级黄色免费 | 黄色网址免费在线播放 | 特级西西444www大精品视频免费看 | 亚洲成人精品国产 | 欧美黄成人免费网站大全 | 99麻豆久久久国产精品免费 | 88xx成人永久免费观看 | 日本在线观看一区二区 | 91久久国产露脸精品免费 | 国产无遮挡裸体免费视频 | 国产999在线| av懂色| 亚洲国产精品久久久久久久 | 视频一区二区国产 | 曰本三级日本三级日本三级 | 黄网站免费观看视频 | 久久久久久久久久久久久久国产 | 午夜视频啊啊啊 | 亚洲三区精品 | 国产亚洲精品久久午夜玫瑰园 | 亚洲精品在线观看网站 | 午夜精品久久久久久久爽 | 亚洲av毛片成人精品 |