本文实例讲述了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程序设计有所帮助。