首頁  >  文章  >  Java  >  數組排序的詳細介紹

數組排序的詳細介紹

零下一度
零下一度原創
2017-07-23 17:22:001165瀏覽

一概述

#1.雙層迴圈

排序通常由雙層循環實現,外層循環控制循環輪數,內層循環實現單次排序。外層循環的索引從1到arr.length-1,內層循環循環次數隨外層循環循環次數的增加而減少。

二冒泡法

#1.基本想法

比較相鄰的兩個元素,如果滿足條件,則交換位置,這樣就把較大的元素移動到後面了。

2.演算法實作

public static int[] bubbleSort(int[] arr) {for (int i = 1; i < arr.length; i++) {for (int j = 0; j < arr.length - i; j++) {if (arr[j] > arr[j + 1]) {int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }return arr;
    }

三直接排序

## 1.基本想法

從未排序序列中篩選出最大值,放在未排序序列的尾部。外層循環循環一次,交換未排序序列最大值與未排序序列最後一個元素的位置,其他元素位置不變,關鍵是取得最大值的索引。直接排序比冒泡排序快。

內層循環切入點:假定未排序序列第一個即索引為0的元素為最大值,然後將其與剩餘元素進行對比,以取得最大值的索引。

2.演算法實作

public static int[] directSort(int[] arr) {int len = arr.length;int index;for (int i = 1; i < len; i++) {
            index = 0;for (int j = 1; j <= len - i; j++) {if (arr[index] < arr[j]) {
                    index = j;
                }int temp = arr[len - i];
                arr[len - i] = arr[index];
                arr[index] = temp;
            }
        }return arr;
    }

#四反轉排序

1.基本想法

交換索引和兩個為arr.length-1的元素的位置,只需一層循環,循環次數為arr.length/2-1。

2.演算法實作

public static int[] reverseSort(int[] arr) {for (int i = 0; i < arr.length / 2; i++) {int temp = arr[i];
            arr[i] = arr[arr.length - 1 - i];
            arr[arr.length - 1 - i] = temp;
        }return arr;
    }
#

以上是數組排序的詳細介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn