思想:
把小的元素往前调,或者把大的元素往后调;比较的是两个相邻的元素,调换也是发送在这两个元素之间
code:
#include <stdio.h> #define LEN 5 int testData[LEN] = {10, 5, 2, 4, 7}; void swap(int *pa, int *pb) { int temp; temp = *pa; *pa = *pb; *pb = temp; } void bubble_sort(void) { int i, j, buf; for(i=0; i<LEN-1; i++){ printf("%d, %d, %d, %d, %d\n", testData[0], testData[1], testData[2], testData[3], testData[4]); for(j=LEN-1; j>i; j--){ if(testData[j] < testData[j-1]){ swap(&testData[j], &testData[j-1]); } } } printf("%d, %d, %d, %d, %d\n", testData[0], testData[1], testData[2], testData[3], testData[4]); } int main(int argc, char *argv[]) { bubble_sort(); return 0; }
截图: