public class SortMethod { public static void main(String[] args) { int[] numbers = new int[]{88,77,66,55,44,33,22,11,10,8,5,5,5,96,58}; numbers=SortMethod.oddEvenSort(numbers); print(numbers); } public static void print(int[] nums){ for(int i=0; i<nums.length; i++){ System.out.print(nums[i]+" "); } } /** * 奇偶排序法 * @param array 传入数组 * @return 排序好的数组 */ public static int[] oddEvenSort(int[] array) { /** * 默认为尚未排序 */ boolean unsorted = true; /** * 临时变量 */ int temp=0; /** * 最大的数组下标 */ int maxBound=array.length-1; while (unsorted) { unsorted = false; //奇数交换 for(int i=1; i<maxBound; i+=2){ if (array[i] > array[i + 1]) { temp = array[i]; array[i] = array[i+1]; array[i+1] = temp; unsorted = true; } } //偶数交换 for(int i=0; i<maxBound; i+=2){ if (array[i] > array[i + 1]) { temp = array[i]; array[i] = array[i+1]; array[i+1] = temp; unsorted = true; } } } return array; } } 奇偶排序法在多CPU的处理机上有优势,但是以上代码还需要完善,比如临时变量的争用等,还不适合并行运算。因为奇偶排序在排序完成后,还是有 多余的比较次数和移动次数,至于如何优化还没想到方法。