1 #include <stdlib.h>
2 #include <stdio.h>
3
4 typedef int Item;
5 #define key(A) (A)
6 #define less(A, B) (key(A) < key(B))
7 #define exch(A, B) {Item t = A; A = B; B = t;}
8 #define compexch(A, B) if(less(B,A)) exch(A,B)
9 // 注意在宏函数这里实际是不做任何执行的,只是替换而已
10
11 void sort(Item a[], int l, int r){
12 int i;
13 int j;
14 for(i = l+1; i<=r; i++){
15 for(j=i; j>l; j--){
16 compexch(a[j-1], a[j]);
17 }
18 }
19 }
20
21 void main(int argc, char* argv[]){
22 int i;
23 int N = atoi(argv[1]);
24 int* a = malloc(N*sizeof(int));
25 for(i=0; i<N; i++){
26 a[i] = rand()%1000;
27 printf("%d ", a[i]);
28 }
29 printf("\n");
30 sort(a, 0, N-1);
31 for(i=0; i<N; i++){
32 printf("%d ", a[i]);
33 }
34 printf("\n");
35 }