【C++】Perm递归全排列函数分析
来源:互联网 发布:js数组按下标删除元素 编辑:程序博客网 时间:2024/05/21 21:39
程序源码:
#include<stdio.h>#include<Windows.h>#include<iostream>using namespace std;void Perm(int* array, int size, int N) { if(N == size) { for(int i = 0; i < size; ++i){ cout<<array[i] ; } cout<<endl; } else { for(int i = N; i < size; ++i){ swap(array[i], array[N]); Perm(array, size, N+1); swap(array[i], array[N]); } } } int main(){ int arr[5]={1,2,3,4,5}; Perm(arr,5,3); system("pause"); return 0;}
程序运行结果:
【程序分析】:
从下图的分析中我们可以看出,Perm函数的功能是将传递过来的数组的后size - N 位进行全排列,将排列的每一组数都输出。
第一次循环:
第二次循环:
【例】:对数组的后三位进行全排列。主函数如下所示:
int main(){ int arr[6]={1,2,3,4,5,6}; Perm(arr,6,3); system("pause"); return 0;}
【结果】:
结论:
【时间复杂度】:O(n!)
Perm函数是一个递归函数,它的作用是对数组的后size-N 位进行全排列,缺点是时间复杂度高。
阅读全文
0 0
- 【C++】Perm递归全排列函数分析
- Perm--全排列函数
- perm全排列
- 全排列算法之Perm递归算法实现
- 全排列(Perm)的递归实现算法
- 全排列---递归实现与分析(C语言)
- 递归函数生成全排列
- C 全排列 递归写法
- NOI2.2基本算法之递归和自调用函数 全排列 分析----如何写全排列函数
- 全排列 递归方法的步骤分析
- Num 33 : 函数递归 [ 全排列 ]
- Algorithm--全排列2递归(c#)
- c语言递归全排列问题
- C语言递归实现全排列
- 全排列-递归实现-C描述
- 元素全排列递归实现(C++)
- 全排列 递归实现 c 语言实现
- 【转载】2.2基本算法之递归和自调用函数 全排列分析—用next_permutation函数,全搞定
- 1074. 宇宙无敌加法器(20)
- <a>标签的href与onclick事件区别
- jupyter-notebook无法启动,闪退问题的解决方法~
- ubuntu14.04部署k8s-1.2.4
- 在硅谷当佛系程序员是种什么样的体验?
- 【C++】Perm递归全排列函数分析
- cloc工具统计项目代码量
- java 文件上传 之 好几种方式上传。(~ o ~)~zZ
- PAT乙级1038. 统计同成绩学生(20)
- 特征选择算法在微博业务应用中的演进历程
- vue——两种方式实现列表动态添加和删除
- Android 自定义布局
- 单节电池电压容量计
- Linux 安装activemq