冒泡排序 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。 冒泡排序算法的运作如下:(从后往前) 比较相邻的元素。如果第一个比第二个大
import org.junit.Test;
/**
* 全排序思路:假设有n个数需要进行全排列,我们可以把每个数都放到第一个位置,然后剩下的n-1个数进行全排列。
* 即有n*(n-1)!种可能性,与n个数进行全排列的n!次可能性一致
* 利用递归的方式,依此类推当剩下的数个数为1时,为一次排列,输出该排列。
* 所以递归函数可以如下permutation所示:
* @author YH
*
*/
public class AllSort {
public void permutation(char[] buf, int start, int end) {
if (start == end) {// 当只要求对数组中一个字母进行全排列时,只要就按该数组输出即可
for (int i = 0; i <= end; i++) {
System.out.print(buf[i]);
}
System.out.println();
} else {// 多个字母全排列
for (int i = start; i <= end; i++) {
char temp = buf[start];// 交换数组第一个元素与后续的元素
buf[start]