swap cake

来源:互联网 发布:摄像头搜索软件 编辑:程序博客网 时间:2024/05/22 15:58
public class cake {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubint array[] = { 4, 1, 5, 2, 3,9,7,34,12,23,12 };int start=0;int end=array.length-1;cakeSort(array,start,end);for(int i=0;i<=end;i++)System.out.print(array[i]+" ");}public static void cakeSort(int[] array,int start,int end) {int i = end;int maxIndex=findMax(array,start,i);reverseOrder(array,start,maxIndex,i);i--;if(i<0)return;cakeSort(array,start,i);}public static int findMax(int[] array, int start, int end) {int maxIndex=0;int max = Integer.MIN_VALUE;for (int i = start; i <= end; i++) {if (array[i] > max) {max = array[i];maxIndex = i;}}return maxIndex;}// 每两次交换就把最大的放到最下面,len每次递减public static void reverseOrder(int[] array,int s,int e,int len){int tmp[] =new int[array.length];for(int i=0;i<array.length;i++)tmp[i]=0;//第一次交换for(int i=s;i<=e;i++){tmp[i]=array[i];}for(int i=e;i>=s;i--){array[e-i]=tmp[i];}//第二次交换for(int i=0;i<=len;i++){tmp[i]=array[i];}for(int i=len;i>=0;i--){array[len-i]=tmp[i];}}}