#include
#include
//氣泡排序
void
bubblesort(
int*array,
intn)
} } }
//改進的氣泡排序,在一次冒泡的過程中,如果沒有發生交換,則已經有序
void
improvedbubblesort(
int*array,
intn)
} //在一次冒泡過程後,flag依然為0,表示未發生交換,則排序結束
if(0==flag)
} } //進一步改進的氣泡排序,如果在某次冒泡過程中,最後一次進行交換的位置為flag,則
//表示flag之後的序列已經有序,那麼下一次冒泡就無需比較flag之後的序列,即只要比
//較到flag就可以結束此次冒泡過程。當flag=0時,表示某趟冒泡沒有發生交換,即可結束。
void
betterbubblesort(
int*array,
intn)
} bound=flag;
} }
//雙向氣泡排序,一次冒泡的過程中,分別將最大的記錄和最小的記錄都放到最終的位置
void
doublebubblesort(
int*array,
intn)
} //下沉的過程沒有發生交換,排序結束
if(0==maxflag)
//下沉過程結束後,重新設定下邊界(最大有序邊界)
maxbound=maxflag;
//此次交換將最小值上浮
for(j=maxbound;j>minbound;j--)
} //上浮的過程沒有發生交換,排序結束
if(0==minflag)
//上浮過程結束後,重新設定上邊界(最小有序邊界)
minbound=minflag;
} }
intmain(
intargc,
char
* argv)
; int
i;
printf("before sort: "
);
for(i=0;i<8;i++)
//bubblesort(array,8);
//improvedbubblesort(array,8);
//betterbubblesort(array,8);
doublebubblesort(array,8);
printf("\n after sort: "
);
for(i=0;i<8;i++)
printf("\n"
);
return
0;
}
氣泡排序法改進
void bubblesort int a,int n m nfalg void bs int a,int n m nfalg printf m d n m printf 第 d次冒泡 n count 選擇排序 從無序序列裡面選乙個最大的或者最小的替換有序序列最後乙個位置 void selectso...
排序 冒泡法(改進)
排序過程 將第乙個記錄的keyword與第二個記錄的keyword進行比較,若為逆序r 1 key r 2 key,則交換 然後比較第二個記錄與第三個記錄 依次類推,直至第n 1個記錄和第n個記錄比較為止,第一趟氣泡排序,結果keyword最大的記錄被安置在最後乙個記錄上。對前n 1個記錄進行第二趟...
氣泡排序法的改進
1 冒泡法思想 將相鄰兩個數比較,將小的調到前頭。排序過程 n 10 1 比較第乙個數與第二個數,若為逆序即a 0 a 1 則交換 然後比較第二個數與第三個數 依次類推,直至第n 1個數和第n個數比較為止 第一趟氣泡排序。結果 最大數放在最後1個位置 a n 1 2 對前n 1個數進行第二趟氣泡排序...