C常用的对数组操作的几个方法

  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 }

两个数组元素交换的思想,备份下操作数组常用的方法。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值