冒泡排序的优化

冒泡排序使用两个for循环实现,如果在循环的中途已经将序列排列好,则应跳出循环,避免无意义的操作。

程序如下。

/**
**  @author:hushunfeng
**    
*/
#include<stdio.h>

#define bool int 

void swap(int *a,int *b) {
    int temp;
    temp = *a;
    *a = *b;
    *b = temp;
}

void bubbleSort(int *array,int arraySize) {

    bool flag = 1;
    int i =0;
    int j =0;
    
    while(flag) {
        flag = 0;
        for(j=0;j<arraySize-1-i;j++) {
            if(array[j]>array[j+1]) {
                swap(&array[j],&array[j+1]);
                flag = 1;
            }
        }
        i++;
    }
}

void main() {
    int array[8] = {8,4,3,6,5,2,1,7};
    int i;
    bubbleSort(array,8);

    for(i = 0; i < 8 ; i++) {
        printf("%d\n",array[i]);
    }

}

 

posted @ 2014-08-04 13:18  痞子胡先生  阅读(173)  评论(2编辑  收藏  举报