天天看點

java一維數組排序_Java數組常用排序算法執行個體小結

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

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 };

// 建立一個初始化的一維數組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個元素一行

}

}

}

運作結果:

未排序的數組:

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

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();

}

}

}

運作結果:

沒有使用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

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;

}

}

運作結果:

排序前的數組:

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

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個元素一行

}

}

}

運作結果:

未排序的數組:

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

PS:這裡再為大家推薦一款關于排序的示範工具供大家參考:

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