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

来源:互联网 发布:js如何验证手机号码 编辑:程序博客网 时间:2024/05/21 09:18
  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
原创粉丝点击