冒泡排序的优化
冒泡排序使用两个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]); } }