1 #include <stdio.h>
2
3 #define LEN 10
4 #define TRUE 1
5 #define FALSE 0
6
7 /*
8 对 10 个数进行排序
9 */
10 //选择排序法(值得注意的是,直接选择排序和冒泡排序不同,如果某一趟没有交互操作,并不代表已排好序,故不能标识).
11 void
12 select_sort(int *a) {
13 int tmp; //作为两个数交换的临时变量.
14 for(int i = 0; i < LEN - 1; i++) {
15 for(int j = i + 1; j < LEN; j++) {
16 if(a[i] > a[j]) {
17 tmp = a[i];
18 a[i] = a[j];
19 a[j] = tmp;
20 }
21 }
22 }
23 }
24
25 //冒泡排序.
26 void
27 bubble_sort(int *a) {
28 int tmp;
29 int swap; //标识某趟排序是否有交互操作,若无,则说明已排好序.
30 for(int i = 0; i < LEN -1; i++) {
31 swap = FALSE;
32 for(int j = 0; j < LEN - 1 - i; j++) {
33 if(a[j] > a[j + 1]) {
34 tmp = a[j];
35 a[j] = a[j + 1];
36 a[j + 1] = tmp;
37 swap = TRUE;
38 }
39 }
40 if(!swap) //如果已排好序,则不用继续循环.
41 break;
42 }
43 }
44
45 void
46 show(int *a) {
47 for(int i = 0; i < LEN; i++)
48 printf("%d ", a[i]);
49 printf("\n");
50 }
51 int
52 main(void) {
53 //10个数.
54 int a[] = {-1, -7, 8, 2, 7, 321, 3, 9, 11, 17};
55 show(a);
56 select_sort(a);
57 //bubble_sort(a);
58 show(a);
59 printf("\n");
60 }