菜鳥一枚,
剛剛學習數據結構與算法,
爲了加深理解,
所以與同學們分享學習過程。
今天學習的是,
冒泡排序!!!
冒泡排序:兩兩相鄰進行比較,若返序,則交換,直到沒有反序
那麼讓代碼說話:
#include <stdio.h>
#include <stdlib.h>
//ctrl+shift+c 註釋多行
//ctrl+shift+x 取消註釋
void bubosort(int k[],int n) //冒泡排序,從小到大
{
int i,j,temp,flag;
flag=1;
// for(i=0;i<n-1;i++) //假冒泡
// {
// for(j=i+1;j<n;j++) //但這個排序方法不符合兩兩相鄰比較
// {
// if(k[i]>k[j]) //若前一個大於後一個,交換順序
// {
// temp=k[j];
// k[j]=k[i];
// k[i]=temp;
// }
// }
for(i=0;i<n-1&&flag;i++) //沒有執行到移位操作,此循環提早退出
{
for(j=n-1;j>i;j--) //
{
flag=0; //沒有執行到移位操作,
if(k[j-1]>k[j]) //相鄰比較,交換順序
{
temp=k[j-1];
k[j-1]=k[j];
k[j]=temp;
flag=1;
}
}
}
}
int main()
{
int i,a[10]={4,3,6,1,0,8,7,2,9,5};
bubosort(a,10);
printf("排序後結果爲:");
for(i=0;i<10;i++)
{
printf("%d",a[i]);
}
return 0;
}
若有錯誤的地方,請同學們指出。
謝謝同學們的閱讀!!!