翻薄餅


/**
 * @Author JH
 * @CreateDate 18-6-12
 * @Description 翻薄餅 有n張大小各不相同的薄餅,一張疊在另一張上面 將大的放在下邊,
 * 先查找最大的數,如果這個數在最後,不用進行操作,如果這個數在第一位,只需要翻一次,即數組整體換位,
 * 否則要進行兩次交換,第一次將這個數換到第一位,然後再轉至數組,使得這個數變爲最後一個
 */
public class Pancake {
    public void fun_1(int [] array){
        int j=array.length;
        while (j>0){
            int i=j-1 ,max=array[i],index=i;
            for (;i>=0;i--){
               if (max<array[i]){
                   max=array[i];
                   index=i;
               }
            }
            if(index!=j-1) {
                swap(array, index);
                swap(array, j - 1);
            }
            j--;
        }
    }

    private void swap(int[] array, int i1) {
        int temp;
        for (int m=0;m<(i1+1)/2;m++){
            temp=array[m];
            array[m]=array[i1-m];
            array[i1-m]=temp;
        }
    }

    public static void main(String[] args) {
        int a[]={2,4,7,4,6,1,9};
        Pancake p=new Pancake();
        p.fun_1(a);
        for (int i:a){
            System.out.println(i);
        }
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章