将数组元素全排列后输出每个排列结果
来源:互联网 发布:centos 火狐flash插件 编辑:程序博客网 时间:2024/05/16 11:28
#include <iostream>#include <malloc.h>///////////////////////////char *ary; //数组指针////////////////////////////////////////////////void init_ary(int n); //数组个数void srt_l_h(int n); //将数组按值从小到大排列void srt_a_b(char *a, char *b); //交换a,bint find_srt(int n); //找到待排序的位置并进行排序void print(int n); //打印结果/////////////////////////////////////////////////int main() {int n;std::cout << "input tbe dimention of array " ;std::cin >> n;init_ary(n);int sum=0; //计算排序个数srt_l_h(n);print(n);sum++;while(find_srt(n)==1) {print(n);sum++;}std::cout << "sum= " << sum << '\n';return 0;}///////////////////////////////////////////////////void init_ary(int n) {std::cout << "input the data for arry" << '\n';ary = (char *)malloc(n*sizeof(char));for(int i=0; i<n; i++)std::cin >> *(ary+i);}///////////////////////////////////////////////////////void srt_l_h(int n) {std::cout << "resort the arry from low to high" << '\n';for(int i=0; i<n-1; i++) {char min = *(ary+i);int flag = i;for(int j=i+1; j<n; j++)if(*(ary+j)<min) {min = *(ary+j);flag = j;}if(flag != i) {char tmp = *(ary+i);*(ary+i) = *(ary+flag);*(ary+flag) = tmp;}}}/////////////////////////////////////////////////////////////void print(int n) {for(int i=0; i<n; i++)std::cout << *(ary+i);std::cout << '\n';}//////////////////////////////////////////void srt_a_b(char *a, char *b) {char tmp;tmp = *a; *a = *b;*b = tmp;}/////////////////////////////////////////////int find_srt(int n) {int i,j;int flag=0; int waitNum;int tempNum;int minNum;char t;for(i=n-2;i>=0;i--){if(*(ary+i)<*(ary+i+1)){waitNum=i;tempNum=waitNum+1;flag=1;break;}}if(flag==1){ //找到当前值之后大于当前值的最小值并标记其位置for(i=waitNum+1;i<n;i++){if(*(ary+i)>*(ary+waitNum) && *(ary+i)<*(ary+tempNum))tempNum=i;}minNum=tempNum; //minNum标记最小的位置srt_a_b(ary+waitNum,ary+minNum); //将当前值和最小值交换for(i=waitNum+1;i<n-1;i++) //将新当前值之后的按从小到大排列for(j=i+1;j<n;j++)if(*(ary+i)>*(ary+j)){t=*(ary+i);*(ary+i)=*(ary+j);*(ary+j)=t;}return 1;}return 0;}
- 将数组元素全排列后输出每个排列结果
- 输出数组全排列
- 将无序数列升序排列,并输出排列结果和排列后的下标
- 按字典序输出数组内元素的全排列
- 数组元素的全排列
- 编写程序,生成包含20个随机数的列表,然后将前10个元素升序排列,后10个元素降序排列,并输出结果
- 输出数组所有全排列
- 数组排列/全排列(data数组没有重复元素)
- 数组元素全排列(递归版本)
- java实现 数组元素全排列
- java实现数组元素全排列
- 输出数组的全排列方法
- php实现输出数组全排列
- 递归思想输出数组全排列
- 下一次全排列结果
- 输出数组中元素个数为1 - lengh的全排列
- 重复元素全排列
- 输出一组元素的全排列(可包含重复元素)
- struts2标签的使用(Using Struts 2 Tags)
- 浏览器结构分析
- EXCEL如何设置打印区域
- [来自cuug的课]Oracle备份与恢复
- 查看Android源码(类的源码)
- 将数组元素全排列后输出每个排列结果
- 内核配置命令行参数以及Uboot设置环境变量bootargs里面的init=/linuxrc解析
- openCV2.3在visual studio 2010下的配置
- Project Euler problem 17
- Android大图片裁剪终极解决方案(上:原理分析)
- mac 下 call of duty 4在外接屏显示
- struts2 taglib
- [ubuntu12.04] 系统环境设置(英文/中文)
- Vmware虚拟机,物理主机为双网卡的解决办法