冒泡法排序筆記

      網(wǎng)友投稿 1068 2025-03-31

      和上篇博文:簡(jiǎn)單的成績(jī)錄入系統(tǒng)程序及分析以及思考一樣,這篇也是一年前做的筆記,真恨自己當(dāng)時(shí)為什么就不知道使用博客記筆記,有了博客,就可以看到自己學(xué)習(xí)的點(diǎn)滴和進(jìn)步,記筆記也方便,還能分享知識(shí)。

      本文檔致力于練習(xí)冒泡排序法,用c語(yǔ)言的各種語(yǔ)法,例如數(shù)組,指針等知識(shí)進(jìn)行編程,達(dá)到既對(duì)算法的一次實(shí)踐,又對(duì)語(yǔ)法的一次回顧,爭(zhēng)取熟悉c編程語(yǔ)言,不斷應(yīng)用c語(yǔ)言,實(shí)現(xiàn)最后的推陳出新。

      冒泡排序法是一種重要的排序思想,本次練習(xí)要實(shí)現(xiàn)玩轉(zhuǎn)冒泡排序法,同樣,本程序中的排序算法均在一個(gè)定義的函數(shù)中實(shí)現(xiàn),不斷改變的是數(shù)組與指針的用法,但指針僅限于列指針。下面是第一個(gè)源程序:

      #include

      int main()

      {

      void bubble(int *p,int n);??? //冒泡排序法函數(shù)聲明

      int array[10],i;

      printf("Please input 10 interger numble:\n");

      for(i=0;i<=9;i++)

      scanf("%d",&array[i]);??????? //輸入十個(gè)整數(shù)

      bubble(array,10);???????????? //冒泡排序函數(shù)調(diào)用

      printf("The order of the numble concerned is:\n");

      for(i=0;i<=9;i++)?????? ??????//輸出排序后的數(shù)

      printf("%d ",array[i]);

      printf("\n");

      return 0;

      }

      void bubble(int *p,int n)??????? //冒泡排序函數(shù)定義

      {

      int i,j,temp;

      for(i=0;i<=n-2;i++)

      for(j=0;j

      if(p[j]>p[j+1])

      {

      temp=p[j];

      p[j]=p[j+1];

      p[j+1]=temp;

      冒泡法排序筆記

      }

      }

      注意,bubble函數(shù)中的指針p,使用時(shí)用了p[]形式,這樣做是為了與數(shù)組類似,便于理解。下面將其改成等效形式:

      void bubble(int *p,int n)??????? //冒泡排序函數(shù)定義

      {

      int i,j,temp;

      for(i=0;i<=n-2;i++)

      for(j=0;j

      if(*(p+j)>*(p+j+1))

      {

      temp=*(p+j);

      *(p+j)=*(p+j+1);

      *(p+j+1)=temp;

      }

      }

      主函數(shù)中使用數(shù)組,定義函數(shù)bubble的形參使用指針時(shí)一種常用的形式,使用指針進(jìn)行編程是c語(yǔ)言的精髓,是一種高效的形式。

      下面的源程序?qū)ι鲜龀绦蜻M(jìn)行改進(jìn),將主函數(shù)中的數(shù)組也用指針進(jìn)行處理:

      #include

      int main()

      {

      void bubble(int *p,int n);??? //冒泡排序法函數(shù)聲明

      int array[10],i;

      int *pp=array,*pp_end=pp+9;

      printf("Please input 10 interger numble:\n");

      for(;pp<=pp_end;pp++)

      scanf("%d",pp);??????? //輸入十個(gè)整數(shù)

      pp=array;

      bubble(pp,10);???????????? //冒泡排序函數(shù)調(diào)用

      printf("The order of the numble concerned is:\n");

      pp=array;

      for(;pp<=pp_end;pp++)???????????? //輸出排序后的數(shù)

      printf("%d ",*pp);

      printf("\n");

      return 0;

      }

      void bubble(int *p,int n)??????? //冒泡排序函數(shù)定義

      {

      int i,j,temp;

      for(i=0;i<=n-2;i++)

      for(j=0;j

      if(*(p+j)>*(p+j+1))

      {

      temp=*(p+j);

      *(p+j)=*(p+j+1);

      *(p+j+1)=temp;

      }

      }

      最后,介紹下冒泡程序的編程思想:

      冒泡排序的思想就是依次對(duì)兩個(gè)順序的數(shù)進(jìn)行比較,小的浮上來(lái),大的沉下去。假如對(duì)N個(gè)數(shù)進(jìn)行冒泡法排序,首先將N個(gè)數(shù)放入數(shù)組當(dāng)中array[N],讓后進(jìn)行N-1次大的循環(huán),即for(i=0;i

      接著,在大循環(huán)(i=0)下進(jìn)行小循環(huán),例如第一次循環(huán)是array[0]與array[1]比較,如果array[0]大,則交換順序,然后array[1]與array[2]比較,大的沉下去,一直到array[N-2]與array[N-1]比較,大的沉下去,總共比較了N-1-0次,經(jīng)歷這次比較,最大的數(shù)沉到了最下面。

      之后,用同樣的方法對(duì)array[0]到array[N-2]進(jìn)行比較,次大的數(shù)沉到了array[N-2]的地址中,總共經(jīng)歷了N-1-1次比較。

      當(dāng)i=N-2時(shí)候,需要比較的是array[0]與array[1]即array[N-1-(N-2)],大的沉入array[1]中,則array[0]中為最小的數(shù),這樣就實(shí)現(xiàn)了冒泡排序。

      總之,小循環(huán)的次數(shù)為N-1-i。

      數(shù)據(jù)結(jié)構(gòu)

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:鼠標(biāo)滾動(dòng)拖不動(dòng)文檔是為什么(鼠標(biāo)滾輪在文檔里劃不動(dòng))
      下一篇:圖片放到wps里會(huì)不會(huì)壓縮
      相關(guān)文章
      亚洲高清中文字幕综合网| 含羞草国产亚洲精品岁国产精品| 亚洲日韩精品无码专区加勒比| 亚洲国产视频一区| 亚洲va久久久噜噜噜久久| 亚洲AV一宅男色影视| 亚洲中文字幕日产乱码高清app | 亚洲国产午夜中文字幕精品黄网站| 亚洲AV无码专区在线观看成人 | 亚洲AV无码欧洲AV无码网站| 九月丁香婷婷亚洲综合色| 亚洲AV无一区二区三区久久| 亚洲av无码片在线播放| 久久精品国产精品亚洲蜜月| 亚洲AV乱码久久精品蜜桃| 亚洲AV日韩AV永久无码久久| 亚洲影院在线观看| 亚洲欧洲日本精品| 亚洲看片无码在线视频| 亚洲高清乱码午夜电影网| 五月天婷亚洲天综合网精品偷| 亚洲国产高清精品线久久| JLZZJLZZ亚洲乱熟无码| 久久亚洲国产午夜精品理论片| 久久精品7亚洲午夜a| 亚洲综合在线观看视频| 亚洲国产福利精品一区二区| 亚洲粉嫩美白在线| 大桥未久亚洲无av码在线| 亚洲国产精品视频| 久久久久久a亚洲欧洲aⅴ| 亚洲欧洲免费视频| 亚洲jjzzjjzz在线观看| 亚洲码欧美码一区二区三区| 国产精品亚洲综合网站| 国产亚洲美女精品久久久| 亚洲AV无码不卡在线播放| 亚洲成AV人综合在线观看| 亚洲人成网站18禁止| 亚洲福利精品电影在线观看| 国产AV无码专区亚洲精品|