首页 > 代码库 > c - 冒泡/选择排序.

c - 冒泡/选择排序.

 1 #include <stdio.h> 2  3 void 4 bubbleSort(int *, int); 5  6 void 7 selectSort(int *, int); 8  9 void10 show(int *, int);11 12 void13 swap(int *, int, int);14 15 int16 main(void) {17     int a[8] = {555, 2, 3, 77, 66, 5, 0, -3};18     int len = 8;19     show(a, len);20     //bubbleSort(a, 4);21     selectSort(a, len);22     show(a, len);23     return 0;24 }25 26 //冒泡排序27 void28 bubbleSort(int *a, int len) {29     for(int i = 0; i < len - 1; i++) {30         bool isSwap = false;    //若已排好序,则不再排.31         for(int j = 0; j < len - i - 1; j++) {32             if(a[j] > a[j+1]) {33                 swap(a, j, j +1);34                 isSwap = true;35             }36         }37         if(!isSwap)    break;38     }39 }40 41 //普通选择排序.42 void43 selectSort(int *a, int len) {44     for(int i = 0; i < len - 1; i++) {45         bool isSwap = false;    //若已排好序,则不再排.46         for (int j = i + 1; j < len; j++) {47             if(a[i] > a[j]) {48                 swap(a, i, j);49                 isSwap = true;50             }51         }52         if(!isSwap)    break;53     }54 }55 56 //一般有3中交换方法,这种方法比较节省内存.57 void58 swap(int *a, int i, int j) {59     a[i] = a[i] ^ a[j];60     a[j] = a[i] ^ a[j];61     a[i] = a[i] ^ a[j];62 }63 64 //打印数组65 void66 show(int *a, int len) {67     int i;68     for(i = 0; i < len; i++)69         printf("%d ", a[i]);70     printf("\n");71 }

 

c - 冒泡/选择排序.