`
wkwukong
  • 浏览: 9023 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

整数1到N的全排列----非递归方法

阅读更多

      庞果网上的一道题目:打印N个字符的全排列,百度了一下。百度百科介绍如下(http://baike.baidu.com/view/1710135.htm),根据百度百科的提示,自己实现了一下,以下为源代码:

public class Combine {
    public static void combine(Integer[] array) {
        Integer[] res = array;
        output(array);
        int flag;
        while (isDes(res)) {
            for (int i = res.length - 1; i > 0; i--) {
                if (res[i - 1] < res[i]) {
                    flag = i - 1;
                    for (int j = res.length - 1; j > flag; j--) {
                        if (res[j] > res[flag]) {
                            swap(res, j, flag);
                            break;
                        }
                    }
                    res = sort(res, i, res.length);
                    output(res);
                    break;
                }
            }
        }
    }

    public static Integer[] sort(Integer[] array, int start, int end) {
        for (int i = start; i < end; i++) {
            for (int j = i; j < end; j++) {
                if (array[i] > array[j]) {
                    int t = array[i];
                    array[i] = array[j];
                    array[j] = t;
                }
            }
        }
        return array;
    }

    public static boolean isDes(Integer[] array) {
        boolean flag = false;
        for (int i = 0; i < array.length - 1; i++) {
            if (array[i] < array[i + 1]) {
                flag = true;
                break;
            }
        }
        return flag;
    }

    public static Integer[] swap(Integer[] array, int a, int b) {
        int t;
        t = array[a];
        array[a] = array[b];
        array[b] = t;
        return array;
    }

    public static void output(Integer[] array) {
        for (int i = 0; i < array.length; i++) {
            System.out.print(array[i] + "\t");
        }
        System.out.print("\r\n");
    }

    public static void main(String[] args) {
        Integer[] arr = {1, 2, 3, 4, 5, 6, 7};
        combine(arr);
    }
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics