首页 java实战 java输入几个数,有多少种排序方法

java输入几个数,有多少种排序方法

package com.yq1012.test; import java.util.Scanner; import ja…

package com.yq1012.test;

import java.util.Scanner;
import java.util.Vector;

/**
 * @author Administrator
 *
 *         1算法是这样的,如果给定N个不同字符,将这N个字符全排列,最终的结果将会是N!种。如:给定
 *         A、B、C三个不同的字符,则结果为:ABC、ACB、BAC、BCA、CAB、CBA一共3!=3*2=6种情况。
 */

public class Qeustion1 {

	/*
	 * 算法是这样的,如果给定N个不同字符,将这N个字符全排列 ,最终的结果将会是N!种。如:给定 A、B、C三个不同的字符,
	 * 则结果为:ABC、ACB、BAC、BCA、CAB、CBA一共3!=3*2=6种情况
	 */
	// 2 ab ba 3 ABC、ACB、BAC、BCA、CAB、CBA

	public static long count = 0;

	private void fullPermutation(Vector<Character> sourse, Vector<Character> result) {
		if (sourse.size() == 0) {
			for (int i = 0; i < result.size(); i++) {
				System.out.print(result.elementAt(i));
			}
			System.out.print("\n");
			count++;
			return;
		}

		for (int i = 0; i < sourse.size(); i++) {
			Vector<Character> tsourse = new Vector<Character>(sourse);
			Vector<Character> tresult = new Vector<Character>(result);
			tresult.add(sourse.elementAt(i));
			tsourse.remove(i);
			new Qeustion1().fullPermutation(tsourse, tresult);
		}
	}

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int n = scanner.nextInt();
		Vector<Character> sourse = new Vector<Character>();
		Vector<Character> result = new Vector<Character>();
		for (int i = 0; i < n; i++) {
			sourse.add((char) ('A' + i));
		}

		new Qeustion1().fullPermutation(sourse, result);

		System.out.println(Qeustion1.count);

	}

}/*
	 * 首先你要弄清楚sourse 里面装的什么, int n=scanner.nextInt(); n 是你输入的数字, 如果你输入 100. 那么,
	 * for (int i = 0; i < n; i++) { sourse.add((char)('A'+i)); } sourse 里面就有100
	 * 个数据 A1,A2,A3....A100. 这样. 然后进入到fullPermutation() 方法,
	 *
	 * 初始进入的时候 sourse.size 是不可能=0 的. 所以往下走, 进入下面这个代码
	 *
	 * for (int i = 0; i < sourse.size(); i++) { 这个地方sourse.size() 其实就是等于你输入的N ,
	 * 就是100 ,
	 *
	 * Vector<Character>tsourse=new Vector<Character>(sourse); 创建一个新的 tsourse
	 * 对象, new 的时候传值, 调用构造方法。 你这个地方可以理解为tsourse = sourse;
	 *
	 * Vector<Character>tresult=new Vector<Character>(result); 这个地方同理
	 *
	 * tresult.add(sourse.elementAt(i)); tresult 集合中放入 sourse 的数据,就是A1-A100,
	 *
	 * tsourse.remove(i); tsourse 清除里面所有的数据。 所以这个时候tsourse.size ==0;
	 *
	 * new Question1().fullPermutation(tsourse, tresult); 重复调用fullPermutation()
	 * 方法,
	 *
	 * 注意. 这个时候tsourse .size() 是== 0 的; 也就是下面的 sourse = 0; 所以.
	 * 进入fullPermutation()方法后会执行这个代码 if(sourse.size()==0){ for (int i = 0; i <
	 * result.size(); i++) { System.out.print(result.elementAt(i)); }
	 * System.out.print("\n"); count++; return; 运行完毕之后就会return, 不会运行下面的代码。 程序停止
	 * }
	 *
	 * 总结一下: 不要太在意变量的名字, 弄清楚值的传递,
	 */

 

免责声明:文章内容不代表本站立场,本站不对其内容的真实性、完整性、准确性给予任何担保、暗示和承诺,仅供读者参考,文章版权归原作者所有。如本文内容影响到您的合法权益(内容、图片等),请及时联系本站,我们会及时删除处理。

为您推荐

mysql 统计日期 今天,昨天,上个月,这个月 ,一年

mysql 统计日期 今天,昨天,上个月,这个月 ,一年

查询5分钟前的数据 select * from table where end_date between date_ad...
Illegal key size or default parameters

Illegal key size or default parameters

简介: java中使用AES对称加密后,请求报错: Caused by: java.lang.RuntimeExcept...
nginx跨域问题

nginx跨域问题

add_header Access-Control-Allow-Origin *; add_header Access-...
Ajax请求发送成功但不进success的解决方法

Ajax请求发送成功但不进success的解决方法

dataType:’Text’ 格式严格按照服务端返回的数据来
【java】post请求参数全大写后台接不到参数

【java】post请求参数全大写后台接不到参数

测试验证的时候发现,接收不到请求参数   驼峰正常 springMVC使用的是Jackson来解析json格式的请求报文...
返回顶部