1 #include <stdio.h> 2 3 void 4 bubbleSort(int *, int); 5 6 void 7 selectSort(int *, int); 8 9 void 10 show(int *, int); 11 12 void 13 swap(int *, int, int); 14 15 int 16 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 void 28 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 void 43 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 void 58 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 void 66 show(int *a, int len) { 67 int i; 68 for(i = 0; i < len; i++) 69 printf("%d ", a[i]); 70 printf("\n"); 71 }
时间: 2024-10-01 07:19:02