1 #include <stdio.h>
2
3 void array_rand(int arr[], int len)
4 {
5 int i;
6
7 for (i = 0; i < len; i++)
8 {
9 arr[i] = rand() % 100;
10 }
11 }
12
13 void array_output(int arr[], int len)
14 {
15 int i;
16
17 for (i = 0; i < len; i++)
18 {
19 printf("%d ", arr[i]);
20 }
21 printf("\n");
22 }
23
24 int array_max(int arr[], int len)
25 {
26 int i, max;
27
28 for (i = 1, max = arr[0]; i < len; i++)
29 {
30 if (arr[i] > max)
31 max = arr[i];
32 }
33
34 return max;
35 }
36
37 int array_min(int arr[], int len)
38 {
39 int i, min;
40
41 for (i = 1, min = arr[0]; i < len; i++)
42 {
43 if (arr[i] < min)
44 min = arr[i];
45 }
46
47 return min;
48 }
49
50 void array_rev(int arr[], int len)
51 {
52 int i, l = len / 2;
53 int t;
54
55 for (i = 0; i < l; i++)
56 {
57 /*t = arr[i];*/
58 /*arr[i] = arr[len - i - 1];*/
59 /*arr[len - i - 1] = t;*/
60
61 arr[i] ^= arr[len - i - 1];
62 arr[len - i - 1] ^= arr[i];
63 arr[i] ^= arr[len - i - 1];
64 }
65 }
66
67 void array_left(int arr[], int len)
68 {
69 int i, l = len - 1;
70
71 for (i = 0; i < l; i++)
72 {
73 arr[i] ^= arr[i + 1];
74 arr[i + 1] ^= arr[i];
75 arr[i] ^= arr[i + 1];
76 }
77 }
78
79
80 void array_right(int arr[], int len)
81 {
82 int i;
83
84 for (i = len - 1; i > 0; i--)
85 {
86 arr[i] ^= arr[i - 1];
87 arr[i - 1] ^= arr[i];
88 arr[i] ^= arr[i - 1];
89 }
90 }
91
92 void array_sort(int arr[], int len)
93 {
94 int i, j, l = len - 1;
95
96 for (i = 0; i < l; i++)
97 {
98 for (j = i + 1; j < len; j++)
99 {
100 if (arr[i] > arr[j])
101 {
102 arr[i] ^= arr[j];
103 arr[j] ^= arr[i];
104 arr[i] ^= arr[j];
105 }
106 }
107 }
108 }
109
110 void array_uniq(int arr[], int len)
111 {
112 int i, j, flag = 1, count = 1;
113
114 for (i = 1; i < len; i++)
115 {
116 flag = 1;
117
118 for (j = 0; j < count; j++)
119 {
120 if (arr[i]==arr[j])
121 {
122 flag = 0;
123 break;
124 }
125 }
126
127 if (flag)
128 {
129 arr[count++] = arr[i];
130 }
131 }
132
133 printf("uniq: ");
134 array_output(arr, count);
135 }
136
137 int main(void)
138 {
139 int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 1, 5};
140 int l = sizeof(a) / sizeof(a[0]);
141
142 array_rand(a, l);
143 printf("init: ");
144 array_output(a, l);
145
146 printf("max = %d, min = %d\n", array_max(a, l),
147 array_min(a, l));
148
149 array_rev(a, l);
150 printf("rev: ");
151 array_output(a, l);
152
153 array_left(a, l);
154 printf("left: ");
155 array_output(a, l);
156
157 array_right(a, l);
158 printf("right: ");
159 array_output(a, l);
160
161 array_sort(a, l);
162 printf("sort: ");
163 array_output(a, l);
164
165 array_uniq(a, l);
166
167 return 0;
168 }
两个数组元素交换的思想,备份下操作数组常用的方法。