I studied an algorithm. The weather is full of sweat.
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}