冒泡排序(優(yōu)化)
1.比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
2.對每一對相鄰元素作同樣的工作,從開始第一對到結(jié)尾的最后一對。在這一點,最后的元素應該會是最大的數(shù)。
3.針對所有的元素重復以上的步驟,除了最后一個。
4.持續(xù)每次對越來越少的元素重復上面的步驟,直到?jīng)]有任何一對數(shù)字需要比較。
int array[] = {3,7,5,2,9,4,1,8,6};
int count = sizeof(array) / sizeof(array[0]);
int flag = 0;//0無序 1 有序
for (int i = 0; i <? count - 1 &&flag == 0 ; i ++) {
flag = 1; // 假定有序
for (int j = 0; j < count - i - 1; j ++) {
if (array[j] > array[j + 1]) {
int tem = array[j];
array[j] = array[j + 1];
array[j + 1] = tem;
flag = 0; //確定無序
}
}
}
for (int i = 0; i < count ; i ++) {
printf("[%2d] : %d\n", i, array[i]);
}