本文實例講述了java數據結構與算法之奇偶排序算法。分享給大家供大家參考,具體如下:
算法思想:
基本思路是奇數列排一趟序,偶數列排一趟序,再奇數排,再偶數排,直到全部有序
舉例吧,
待排數組[6 2 4 1 5 9]
第一次比較奇數列,奇數列與它的鄰居偶數列比較,如6和2比,4和1比,5和9比
[6 2 4 1 5 9]
交換后變成
[2 6 1 4 5 9]
第二次比較偶數列,即6和1比,5和5比
[2 6 1 4 5 9]
交換后變成
[2 1 6 4 5 9]
第三趟又是奇數列,選擇的是2,6,5分別與它們的鄰居列比較
[2 1 6 4 5 9]
交換后
[1 2 4 6 5 9]
第四趟偶數列
[1 2 4 6 5 9]
一次交換
[1 2 4 5 6 9]
具體代碼:
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
|
public class Main { /** * @param args the command line arguments */ public static void main(String[] args) { int [] numbers = new int []{ 12 , 33 , 45 , 33 , 13 , 55 , 34 , 7 , 6 }; Main.oddEventSort(numbers); for ( int i= 0 ; i<numbers.length; i++){ System.out.print(numbers[i]+ " " ); } } private static void oddEventSort( int [] numbers){ int temp; for ( int i=numbers.length- 1 ; i>numbers.length/ 2 - 1 ; i--){ for ( int j= 1 ; j<=i; j+= 2 ){ if (j==numbers.length- 1 ) break ; if (numbers[j]>numbers[j+ 1 ]){ temp = numbers[j]; numbers[j] = numbers[j+ 1 ]; numbers[j+ 1 ] = temp; } } for ( int j= 0 ; j<=i; j+= 2 ){ if (j==numbers.length- 1 ) break ; if (numbers[j]>numbers[j+ 1 ]){ temp = numbers[j]; numbers[j] = numbers[j+ 1 ]; numbers[j+ 1 ] = temp; } } } } } |
PS:據說在多核時代這個算法比較好用
希望本文所述對大家java程序設計有所幫助。