字典序排序-Java

    科技2024-04-01  83

    字典序排序求全排列

    import java.util.Arrays; /** * @author 毛毛虫 * @create 2020-09-24 10:40 */ public class dictionaryOrder { void swap(int arr[],int a,int b){ int temp = 0; temp = arr[a]; arr[a]=arr[b]; arr[b]=temp; } //全排列 void Prim(int arr[],int n){ int num =1; int a=0; int b=0; for (int i=n;i>0;i--){//计算有多少种情况,就循环多少次 num*=i; } while(num-->0){ for (int i=0;i<n;i++){//打印情况 System.out.print(arr[i]); } System.out.println(); for (int i=n-1;i>0;i--){//从右往左,找出第一个左边小于右边的数,设置为arr[a] if (arr[i-1]<arr[i]){ a=i-1; break; } } for (int j=n-1;j>a;j--){//从右往左,找出第一个大于arr[a]的数,设为arr[b] if (arr[j]>arr[a]){ b=j; break; } } swap(arr,a,b); //交换arr[a],arr[b] Arrays.sort(arr,a+1,n); //将arr[a]后面的数据,由小到大排序 } } public static void main(String[] args) { int arr[]={2,1,3,4}; Arrays.sort(arr);//首先得将要排序的数组从小到大就行排序 dictionaryOrder dictionaryOrder = new dictionaryOrder(); dictionaryOrder.Prim(arr,4); } }
    Processed: 0.010, SQL: 8