我的演算法學習(一)----數組的全排列

來源:互聯網
上載者:User

看見別人寫出來漂亮實用的代碼,終於下定決心好好學習演算法,在這裡記錄下自己學習的成果。

前兩天看到數組的全排列,於是自己照著別人的想法實現了一下,感覺自己理解了,有點小高興,記載一下。

/* * 數組的全排列*/public class myAllSort {public static void sort(int[] number,int start,int end){int temp;//如果發現數組對掉元素到了最後一個,那麼就輸出,證明已經符合要求if(start==end){print(number);}//依次將數組的第一個元素和後面的元素一一對調,然後第一次對掉之後遞迴,//將數組的第二個元素和他之後的元素對掉,最後一次進行/* * 1  2  3  4-->1 2 3 4-->1 2 3 4 *     1 2 4 3 *   1 3 2 4-->1 3 2 4 *     1 3 4 2 *    1 4 3 2-->1 4 3 2 *      1 4 2 3 * 2  1  3  4 * 3  2  1  4 * 4  2  3  1 * */for(int i=start;i<end;i++){temp = number[start];number[start] = number[i];number[i] = temp;sort(number,start+1,end);//print(number);//輸出排序的全過程//將對掉之後的數組便會原來的順序,以便下次temp = number[start];number[start] = number[i];number[i] = temp;//}}public static void print(int[] number){for(int i=0;i<number.length;i++){System.out.print(number[i]+"--");}System.out.println();}public static void main(String[] args) {int[] number = {1,2,3,4};sort(number,0,number.length);}}
還有一種數組的選擇排序方法,感覺這個思想對我很有用,具體的出處給忘了。

import java.util.ArrayList;import java.util.Arrays;import java.util.List;/*  * 從屬注重選擇幾個數字進行排列 * 例如:五個選三個的全排列 * 演算法原理:在數組中選取一個數字先儲存到集合中,然後再依次選取其他數字, * */public class ChooseServalFromNumber {public static final int  NUM = 4;public static void main(String[] args) {Object[] obj = new String[]{"1","2","3","4"};List<Object> list = Arrays.asList(obj);chooseNumberSort(list,new ArrayList<Object>());}public static void chooseNumberSort(List<Object> list,List<Object> target){//如果目的地組合中的數字達到了我們需求的個數就輸出//if(target.size()==NUM)//System.out.println(target+"--");if(target.size()==4)System.out.println(list+"  -->  "+target+"--輸出");//else//System.out.println(list+"  -->  "+target);for(int i=0;i<list.size();i++){List<Object> newList = new ArrayList<Object>(list);List<Object> newTarget = new ArrayList<Object>(target);newTarget.add(newList.get(i));newList.remove(i);System.out.println(list+"  -->  "+target);chooseNumberSort(newList,newTarget);}}}/*    輸出結果:[1, 2, 3, 4]  -->  [][2, 3, 4]  -->  [1][3, 4]  -->  [1, 2][4]  -->  [1, 2, 3][]  -->  [1, 2, 3, 4]--輸出[3, 4]  -->  [1, 2][3]  -->  [1, 2, 4][]  -->  [1, 2, 4, 3]--輸出[2, 3, 4]  -->  [1][2, 4]  -->  [1, 3][4]  -->  [1, 3, 2][]  -->  [1, 3, 2, 4]--輸出[2, 4]  -->  [1, 3][2]  -->  [1, 3, 4][]  -->  [1, 3, 4, 2]--輸出[2, 3, 4]  -->  [1][2, 3]  -->  [1, 4][3]  -->  [1, 4, 2][]  -->  [1, 4, 2, 3]--輸出[2, 3]  -->  [1, 4][2]  -->  [1, 4, 3][]  -->  [1, 4, 3, 2]--輸出[1, 2, 3, 4]  -->  [][1, 3, 4]  -->  [2][3, 4]  -->  [2, 1][4]  -->  [2, 1, 3][]  -->  [2, 1, 3, 4]--輸出[3, 4]  -->  [2, 1][3]  -->  [2, 1, 4][]  -->  [2, 1, 4, 3]--輸出[1, 3, 4]  -->  [2][1, 4]  -->  [2, 3][4]  -->  [2, 3, 1][]  -->  [2, 3, 1, 4]--輸出[1, 4]  -->  [2, 3][1]  -->  [2, 3, 4][]  -->  [2, 3, 4, 1]--輸出[1, 3, 4]  -->  [2][1, 3]  -->  [2, 4][3]  -->  [2, 4, 1][]  -->  [2, 4, 1, 3]--輸出[1, 3]  -->  [2, 4][1]  -->  [2, 4, 3][]  -->  [2, 4, 3, 1]--輸出[1, 2, 3, 4]  -->  [][1, 2, 4]  -->  [3][2, 4]  -->  [3, 1][4]  -->  [3, 1, 2][]  -->  [3, 1, 2, 4]--輸出[2, 4]  -->  [3, 1][2]  -->  [3, 1, 4][]  -->  [3, 1, 4, 2]--輸出[1, 2, 4]  -->  [3][1, 4]  -->  [3, 2][4]  -->  [3, 2, 1][]  -->  [3, 2, 1, 4]--輸出[1, 4]  -->  [3, 2][1]  -->  [3, 2, 4][]  -->  [3, 2, 4, 1]--輸出[1, 2, 4]  -->  [3][1, 2]  -->  [3, 4][2]  -->  [3, 4, 1][]  -->  [3, 4, 1, 2]--輸出[1, 2]  -->  [3, 4][1]  -->  [3, 4, 2][]  -->  [3, 4, 2, 1]--輸出[1, 2, 3, 4]  -->  [][1, 2, 3]  -->  [4][2, 3]  -->  [4, 1][3]  -->  [4, 1, 2][]  -->  [4, 1, 2, 3]--輸出[2, 3]  -->  [4, 1][2]  -->  [4, 1, 3][]  -->  [4, 1, 3, 2]--輸出[1, 2, 3]  -->  [4][1, 3]  -->  [4, 2][3]  -->  [4, 2, 1][]  -->  [4, 2, 1, 3]--輸出[1, 3]  -->  [4, 2][1]  -->  [4, 2, 3][]  -->  [4, 2, 3, 1]--輸出[1, 2, 3]  -->  [4][1, 2]  -->  [4, 3][2]  -->  [4, 3, 1][]  -->  [4, 3, 1, 2]--輸出[1, 2]  -->  [4, 3][1]  -->  [4, 3, 2][]  -->  [4, 3, 2, 1]--輸出*/

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.