冒泡排序
思想:
把小的元素往前调,或者把大的元素往后调;比较的是两个相邻的元素,调换也是发送在这两个元素之间
code:
1 #include <stdio.h> 2 3 #define LEN 5 4 5 int testData[LEN] = {10, 5, 2, 4, 7}; 6 7 void swap(int *pa, int *pb) 8 {//交换 9 int temp; 10 temp = *pa; 11 *pa = *pb; 12 *pb = temp; 13 } 14 15 void bubble_sort(void) 16 {//从小到大排序,下标0的位置保存最小值 17 int i, j; 18 for(i=0; i<LEN-1; i++){ 19 printf("%d, %d, %d, %d, %d\n", testData[0], testData[1], testData[2], testData[3], testData[4]); 20 for(j=LEN-1; j>i; j--){//每次都从从最末端开始判断,到上次排好序的位置结束 21 if(testData[j] < testData[j-1]){//当前位置的数据小于前面的数据,需要交换 22 swap(&testData[j], &testData[j-1]); 23 } 24 } 25 } 26 printf("%d, %d, %d, %d, %d\n", testData[0], testData[1], testData[2], testData[3], testData[4]); 27 } 28 29 int main(int argc, char *argv[]) 30 { 31 bubble_sort(); 32 return 0; 33 }
截图: