• 大小: 19KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-03
  • 语言: Java
  • 标签: 字典排序  全排列  

资源简介

给出了字典排序求取全排列的算法实现,JAVA

资源截图

代码片段和文件信息

/*
 * To change this license header choose License Headers in Project Properties.
 * To change this template file choose Tools | Templates
 * and open the template in the editor.
 */


import java.util.Scanner;

/**
 * 功能: 输入将要求取全排列的数字的个数(不超过10的正整数)并打印全排列。
 *
 * @author 曲文杰 S314060042
 */
public class DictionarySort {

    public static void getAllSort(int n)//字典排序求全排列算法实现
    {
        int current_table[];
        current_table = new int[11];
        int i = 0;
        for (i = 1; i <= n; i++) {//生成初始序列
            current_table[i] = i;
        }
        printCurrentTable(current_table n);//打印起始序列
        boolean flag = true;//存在后边的数大于前边的数的标志位
        int temp = 0;
        int i_max = 1;
        int h_max = 1;
        while (flag) {
            flag = false;//复位flag
            for (i = 1; i < n; i++) {//求 i_max
                if (current_table[i] < current_table[i + 1]) {
                    i_max = i + 1;
                    flag = true;
                }
            }
            if (flag) {
                for (i = i_max - 1; i <= n; i++) {//求h_max
                    if (current_table[i_max - 1] < current_table[i]) {
                        h_max = i;
                    }
                }
                temp = current_table[i_max - 1];//将i_max - 1  与 h_max 互换
                current_table[i_max - 1] = current_table[h_max];
                current_table[h_max] = temp;

                //将i_max 之后的数进行逆序
                for (i = i_max; i <= ((i_max + n) / 2); i++) {
                    temp = current_table[i];
                    current_table[i] = current_table[n + i_max - i];
                    current_table[n + i_max - i] = temp;
                }
                printCurrentTable(current_table n);//打印
            }

        }
    }

    public static void printCurrentTable(int currentTable[] int n) {//打印数组中的序列
        StringBuilder s = new StringBuilder();
        for (int i = 1; i <= n; i++) {
            s.append(currentTable[i]);
        }
        System.out.println(s);
    }

    public static void main(String[] args) {//main
       
        System.out.println(“请输入想要求解的全排序的数字: 0-9“);
        Scanner input = new Scanner(System.in);
        int n = input.nextInt();//读入
        System.out.println(“你想要求解的数字 “ + n + “  的全排列如下: “);
        getAllSort(n);
    }
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        2669  2014-09-05 09:07  DictionarySort.java
     文件       21760  2014-09-04 19:52  曲文杰—运行结果.png

评论

共有 条评论