java把字符串排序输出_JAVA-从题目看算法,将输入字符串进行排序并输出

来看一个排列的样例。它所做的工作是将输入的一个字符串中的全部元素进行排序并输出,比如:你给出的參数是"abc" 则程序会输出:abc acb bac bca cab cba

这是一个典型的可用递归算法来实现的样例,我们来看一下利用递归的2种不同解法。

1.典型递归元素交换的算法

(1)算法的出口在于:low=high也就是如今给出的排列元素仅仅有一个时。

(2)算法的逼近过程:先确定排列的第一位元素。也就是循环中i所代表的元素。

package test;

import java.util.ArrayList;

import java.util.List;

public class Demo1 {

public static void main(String[] args) {

permute("ABCD");

}

public static void permute(String str) {

char[] strArray = str.toCharArray();

permute(strArray, 0, strArray.length - 1);

}

public static void permute(char[] list, int low, int high) {

int i;

if (low == high) {

String cout = "";

for (i = 0; i <= high; i++)

cout += list[i];

System.out.println(cout);

} else {

for (i = low; i <= high; i++) {

char temp = list[low];

list[low] = list[i];

list[i] = temp;

permute(list, low + 1, high);

temp = list[low];

list[low] = list[i];

list[i] = temp;

}

}

}

}

2.利用String的deleteCharAt和charAt来实现元素的交换

package test;

import java.util.ArrayList;

import java.util.List;

public class Demo {

public static void main(String[] args){

String a = "ABCD";

List result = list(a,"");

System.out.println(result.size());

System.out.println(result);

}

public static List list(String base,String buff){

List result = new ArrayList();

if(base.length()==0){

result.add(buff);

}

for(int i=0;i

List mark = list(new StringBuilder(base).deleteCharAt(i).toString(),buff+base.charAt(i));

result.addAll(mark);

}

return result;

}

}

2种方法相比較都是递归算法的实现。但另外一种更加灵活一些,也更加easy进行输出比較。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值