c语言冒泡排序法程序填空_【C语言】两种方式实现冒泡排序算法
題目要求
編寫一個C語言程序,實現(xiàn)基本的冒泡排序算法.
算法
冒泡排序,用一句話來總結(jié):
一組數(shù)中,相鄰的兩個數(shù)進行比較、交換,將最大(小)數(shù)交換至尾(首)部,即完成了一次冒泡排序
要想對N個數(shù)字進行排序,循環(huán)N次即可.
如果真的不理解冒泡排序算法,請點擊:冒泡排序_360百科
核心代碼
//方式一:從頭向尾遍歷,將最大數(shù)(相對)沉入尾部(相對)
void BubbleSort1(int *arr,int sz){
int i = 0;
int j = 0;
assert(arr);
for(i=0;i
for(j=0;j
if(arr[j]>arr[j+1]){
int tmp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = tmp;
}
}
}
}
//方式二:從尾向頭遍歷,將最大數(shù)(相對)冒泡到頭部(相對)
void BubbleSort2(int *arr,int sz){
int i = 0;
int j = 0;
assert(arr);
for(i=0;i
for(j=sz;j>i;j--){
if(arr[j]>arr[j-1]){
int tmp = arr[j];
arr[j] = arr[j-1];
arr[j-1] = tmp;
}
}
}
}
完整代碼
/*
*本代碼版權(quán)歸高小調(diào)博客所有
*作者:高小調(diào)
*日期:2016-9-9
*代碼功能:通過C語言實現(xiàn)冒泡排序算法
*集成開發(fā)環(huán)境:Microsoft Visual Studio 2010
*/
#include
#include
#include
//從頭向尾遍歷
//相鄰兩數(shù)進行比較
//將最大數(shù)(相對)沉入尾部(相對)
void BubbleSort1(int *arr,int sz){
int i = 0;
int j = 0;
assert(arr);
for(i=0;i
for(j=0;j
if(arr[j]>arr[j+1]){
int tmp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = tmp;
}
}
}
}
//從尾向頭遍歷
//相鄰兩數(shù)進行比較
//將最小數(shù)(相對)冒泡到頭部(相對)
void BubbleSort2(int *arr,int sz){
int i = 0;
int j = 0;
assert(arr);
for(i=0;i
for(j=sz;j>i;j--){
if(arr[j]>arr[j-1]){
int tmp = arr[j];
arr[j] = arr[j-1];
arr[j-1] = tmp;
}
}
}
}
//測試函數(shù)
//為了方便起見,將參數(shù)設(shè)定為一個函數(shù)指針
void TestBubbleSort(void (*BubbleSort)(int *arr,int sz)){
int arr[]={1,3,5,7,9,2,4,6,8,0};
int i = 0;
int sz = sizeof(arr)/sizeof(arr[0]);
BubbleSort(arr,sz);
for(i=0; i
printf("%d ",arr[i]);
}
printf("\n");
}
int main(){
TestBubbleSort(BubbleSort1);
TestBubbleSort(BubbleSort2);
system("pause");
return 0;
}
輸出結(jié)果
以上只是冒泡排序算法的基本實現(xiàn),還有很大的優(yōu)化空間.至于優(yōu)化的具體細(xì)節(jié),詳見下文.
(本文來源于互聯(lián)網(wǎng),若有侵權(quán),請聯(lián)系博主)
總結(jié)
以上是生活随笔為你收集整理的c语言冒泡排序法程序填空_【C语言】两种方式实现冒泡排序算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ios8.1.3 刷机8.2beta越狱
- 下一篇: 超级好看的14 款 Chrome 官方主