Java全排列递归算法,实践与总结

Java全排列递归算法,实践与总结

长沙中公优就业      2022-03-09 17:00:01     13

Java全排列递归算法,实践与总结,Java全排列算法:第一遍循环:将list数组index==0的元素依次与数组的每个元素交换,从而保证index==0的位置先后出现n个不同元素

课程价格 请咨询

上课时段: 授课校区:

详细介绍

Java全排列算法:

第一遍循环:将list数组index==0的元素依次与数组的每个元素交换,从而保证index==0的位置先后出现n个不同元素之一,实现对index==0位置的遍历。

第i遍循环:通过交换,使index==i的元素,依次与index为[i,length-1]的元素交换。使index==i位置遍历length-i个不同值

第k次遍历,实质上都是让子列表[k,length-1]的index==0的位置依次出现length-k个不同的值,并在出现每个不同的值时,递归操作子列表[k+1,length-1]

public class Permutation {    public static void permulation(int[] list, int start, int length) {        int i;        if (start == length) {            for (i = 0; i < length; i++)                System.out.print(list[i] + " ");            System.out.println();        } else {            for (i = start; i < length; i++) {                swap(list, start, i);                permulation(list, start + 1, length);                swap(list, start, i);            }        }    }    public static void swap(int[] list, int start, int i) {        int temp;        temp = list[start];        list[start] = list[i];        list[i] = temp;    }    public static void main(String[] args) {        int length = 3;        int start = 0;        int list[] = new int[length];        for (int j = 0; j < length; j++)            list[j] = j + 1;        permulation(list, start, length);    }}

没有注释,其实因为我觉得注释也不太好写。以list[3]={1,2,3}为例。

一、先是123,然后1与1自己对换,递归排列23,2与2自己对换,递归排列3,然后3与3对换,再递归时满足start==length,即越界,所以把123打印出来;

然后上一步2与2自己对换后,2与3对换,(暂时是132),递归到2与2对换,再递归满足start==length,打印132;

二、最先一步1与1自己对换后,1与2对换,(暂时是213),递归排列13,1与1自己对换,递归排列3.3与3自己对换,然后满足If条件打印213:

然后退一步,1与3对换,(暂时是231),递归到1与1自己对换,再递归满足打印条件,打印231;

三、1与1、2对换后,1最后与3对换,(暂时是321),递归排列21,2与2对换,递归排列1.1与1自己对换,后来满足打印条件打印321.2再与1对换,再递归到2与2自己对换,后来打印出312.

Java递归方法:http://www.bjpowernode.com/tutorial_java_se/1042.html

以上就是长沙中公优就业java培训机构的小编针对“Java全排列递归算法,实践与总结”的内容进行的回答,希望对大家有所帮助,如有疑问,请在线咨询,有专业老师随时为你服务。

培训啦提醒您:交易时请核实对方资质,对于过大宣传或承诺需谨慎!任何要求预付定金、汇款等方式均存在风险,谨防上当。