本文實例講述了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