博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法与数据结构:C语言的整数数组全排列(源码)
阅读量:6004 次
发布时间:2019-06-20

本文共 1367 字,大约阅读时间需要 4 分钟。

 1 
# include 
<
stdio.h
>
 2 
# define N 
3
 3 
 4 
void
 swap(
int
 arr[], 
int
 num1, 
int
 num2) {
 5 
        
int
 t 
=
 arr[num1];
 6 
        arr[num1] 
=
 arr[num2];
 7 
        arr[num2] 
=
 t;
 8 
    }
 9 
    
10 
void
 reverse(
int
 arr[], 
int
 num1, 
int
 num2) {
11 
        
int
 i;
12 
        
for
 (i 
=
 
0
; i 
<
 (num2 
-
 num1) 
/
 
2
; i
++
) {
13 
            swap(arr, num1 
+
 i, num2 
-
 
1
 
-
 (i));
14 
        }
15 
    }
16 
17 
int
 nextArr(
int
 arr[]) {
18 
        
int
 left 
=
 
-
1
;
19 
        
int
 right 
=
 
-
1
;
20 
        
int
 i;
21 
        
for
 (i 
=
 N 
-
 
1
; i 
>
 
0
; i
--
) {
22 
            
if
 (arr[i 
-
 
1
<
 arr[i]) {
23 
                left 
=
 i 
-
 
1
;
24 
                
break
;
25 
            }
26 
        }
27 
        
if
 (left 
<
 
0
) {
28 
            
return
 
0
;
29 
        }
30 
31 
32 
        
for
 (i 
=
 N 
-
 
1
; i 
>=
 left; i
--
) {
33 
            
if
 (arr[i] 
>
 arr[left]) {
34 
                right 
=
 i;
35 
                
break
;
36 
            }
37 
        }
38 
        swap(arr, left, right);
39 
        reverse(arr, left 
+
 
1
, N);
40 
        
return
 
1
;
41 
    }
42 
    
43 
int
 sort(
int
 arr[]){
44 
    
int
 i,j,temp;
45 
    
for
(i
=
0
;i
<=
N;i
++
){
46 
        
for
(j
=
0
;j
<
N
-
i;j
++
){
47 
            
if
(arr[j]
>
arr[j
+
1
]){
48 
                temp
=
arr[j];
49 
                arr[j]
=
arr[j
+
1
];
50 
                arr[j
+
1
]
=
temp;
51 
            }
52 
        }
53 
    }
54 
    
return
 arr[N];
55 
}
56 
57 
void
 syarrange(
int
 arr[]){
58 
        
int
 i;
59 
        arr[N]
=
sort(arr);
60 
        
do
{
61 
            
for
 (i 
=
 
0
; i 
<
 N; i
++
) {
62 
                printf(
"
%d 
"
,arr[i]);
63 
            }
64 
            printf(
"
\n
"
);
65 
        }
while
(nextArr(arr)
==
1
);
66 
}
67 
68 
int
 main(){
69 
        
int
 arr[N]
=
{
3
,
1
,
2
};
70 
        syarrange(arr);
71 
        getchar();
72 
        
return
 
0
;
73 
}
本文转自施杨博客园博客,原文链接:http://www.cnblogs.com/shiyangxt/archive/2009/08/16/1547161.html,如需转载请自行联系原作者
你可能感兴趣的文章
four application:geocoder widget
查看>>
转:深度理解Oracle10g中UNDO_RETENTION参数的使用
查看>>
Table中的JCheckBox TableHeader的全选(全反选)功能
查看>>
[翻译] 关闭时最小化到系统托盘中的单实例应用程序
查看>>
多线程编程(2) - 多线程同步之 Event (事件对象)
查看>>
【转】2013年开发者需要了解的10大开发趋势和技能
查看>>
[转]DPM2012系列之十二:还原exchange2010用户邮件
查看>>
在ASP.NET MVC中使用Knockout实践08,使用foreach绑定集合
查看>>
马无夜草不肥:程序员做业余项目的重要性
查看>>
AsyncTask的用法
查看>>
Windows 2003 上使用 Windows Live Writer
查看>>
一页纸IT项目管理:大道至简的实用管理沟通工具
查看>>
UVA 10601 Cubes(Burnside引理)
查看>>
java学习笔记-4 正则表达式
查看>>
ubuntu14.04安装百度云Bcloud
查看>>
一起谈.NET技术,C#中访问私有成员
查看>>
盘点云计算服务中的隐患
查看>>
分享Silverlight/Windows8/WPF/WP7/HTML5周学习导读(6月18日-6月24日)
查看>>
本书资料下载汇总
查看>>
汽车知识:车内异味的清除方法
查看>>