- 论坛徽章:
- 0
|
这里交换用了异或,如果数组元素不是数字,要用一个临时变量。
- $ cat bs.c
- #include <stdio.h>
- void b( int * s, size_t n )
- {
- int i, j;
- for( i=0; i<n; ++i )
- for( j=0; j<n; ++j )
- if( s[i] > s[j] )
- s[i]^=s[j],s[j]^=s[i],s[i]^=s[j];
- }
- void p( int * s, size_t n )
- {
- int i;
- for( i=0; i<n; ++i )
- printf( "%d ", s[i] );
- puts("\n");
- }
- int main()
- {
- int arr[] = {8, 22, 7, 1, 55, 12, 11, 6, 18, 13};
- size_t sz = sizeof(arr) / sizeof(int);
- p( arr, sz );
- b( arr, sz );
- p( arr, sz );
- return 0;
- }
- $ gcc bs.c -o bs
- $ ./bs
- 8 22 7 1 55 12 11 6 18 13
- 55 22 18 13 12 11 8 7 6 1
- $
复制代码 |
|