• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            天之道

            享受編程的樂趣。
            posts - 118, comments - 7, trackbacks - 0, articles - 0
              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            冒泡排序與選擇排序?qū)W習(xí)總結(jié)

            Posted on 2011-09-17 16:53 hoshelly 閱讀(350) 評論(0)  編輯 收藏 引用 所屬分類: C
             冒泡排序的基本概念:
            依次比較相鄰的兩個數(shù),將小數(shù)放在前面,大數(shù)放在后面。即在第一趟:首先比較第1個和第2個數(shù),將小數(shù)放前,大數(shù)放后。然后比較第2個數(shù)和第3個數(shù),將小數(shù)放前,大數(shù)放后,如此繼續(xù),直至比較最后兩個數(shù),將小數(shù)放前,大數(shù)放后。至此第一趟結(jié)束,將最大的數(shù)放到了最后。在第二趟:仍從第一對數(shù)開始比較(因為可能由于第2個數(shù)和第3個數(shù)的交換,使得第1個數(shù)不再小于第2個數(shù)),將小數(shù)放前,大數(shù)放后,一直比較到倒數(shù)第二個數(shù)(倒數(shù)第一的位置上已經(jīng)是最大的),第二趟結(jié)束,在倒數(shù)第二的位置上得到一個新的最大數(shù)(其實在整個數(shù)列中是第二大的數(shù))。如此下去,重復(fù)以上過程,直至最終完成排序。需要用二重循環(huán)排序。
            Example:
            #include<stdio.h>
            int main() 

                
            int i,j,temp,tag; 
                
            int a[11];  //數(shù)組第0位空出
                
            for(i=1;i<=10;i++
                scanf (
            "%d,",&a[i]); 
                
            for(j=1;j<=10;j++
                

                   tag
            =1;
                   
            for (i=1;i<=10-j;i++
                   
            {
                    
            if (a[i]>a[i+1]) 
                   

                       temp
            =a[i]; 
                       a[i]
            =a[i+1]; 
                       a[i
            +1]=temp;
                       tag
            =0;
                   }
             
                   }


                   
            if(1==tag)
                   
            {
                     
            break;
                   }

                }

                    
            for(i=0;i<10;i++)
                        printf(
            "%5d",a[i]);
                        
            return 0;
            }




            以下是選擇排序法:

            每次外循環(huán)先將定位元素的小標(biāo)i值記錄到K,認(rèn)為a[k]是最小值,第一輪比較時,若遇到比a[k]更小的數(shù),則交換兩數(shù)的下標(biāo),由下面的if語句進(jìn)行交換處理。
            這樣第一輪就選出了最小的數(shù),第二輪,同理選出次小的數(shù)排在最小的數(shù)后面。如果是輸入10個數(shù),那么進(jìn)行9輪排序后就可完成整個排序過程。



            #include<stdio.h>//選擇排序法
            void main()
            {
                
            int i,j,t,a[10],k;
                printf(
            "input 10 numbers:\n");
                
            for(i=0;i<10;i++)
                scanf(
            "%d",&a[i]);

                
            for(i=0;i<9;i++)//這里也要注意i=0;i<9;
                {
                    k
            =i;
                    
            for(j=i+1;j<10;j++)
                        
            if(a[k]>a[j])
                            k
            =j;

                        
            if(k!=i)//如果k不等于i,改變了,則交換兩個數(shù)的位置
                        {
                            t
            =a[i];
                            a[i]
            =a[k];
                            a[k]
            =t;
                        }
                }
                
            for(i=0;i<10;i++)//最后輸出已經(jīng)排好序的數(shù)
                    printf("%5d",a[i]);
            }




            PS:大一剛開始接觸這兩個排序算法時,感覺有點亂,現(xiàn)在回過頭來仔細(xì)看,思路清晰了不少。時刻回顧過去的知識,進(jìn)行整理,再認(rèn)識,很重要呀。:-D












            久久夜色精品国产噜噜亚洲a| 看全色黄大色大片免费久久久| 久久亚洲熟女cc98cm| 久久最新免费视频| 人妻精品久久无码区| 99久久精品日本一区二区免费| 国产精品丝袜久久久久久不卡| 久久亚洲精品国产精品婷婷| 久久精品www人人爽人人| 国产亚洲色婷婷久久99精品91| 色播久久人人爽人人爽人人片aV| 久久综合给合久久国产免费| 国产精品永久久久久久久久久| 国产亚洲精久久久久久无码77777| 久久国产免费观看精品| 久久热这里只有精品在线观看| 国产精品久久网| 久久综合视频网| 国产日韩久久久精品影院首页| 久久久国产精华液| 九九热久久免费视频| 国产成年无码久久久久毛片| 久久亚洲国产最新网站| 久久人妻少妇嫩草AV蜜桃| 国内精品伊人久久久久av一坑 | 久久电影网一区| 色诱久久久久综合网ywww| 久久久久亚洲av毛片大| 大蕉久久伊人中文字幕| 国产精品99久久免费观看| 2021国产精品午夜久久| 区亚洲欧美一级久久精品亚洲精品成人网久久久久 | 久久久久免费精品国产| 国产A级毛片久久久精品毛片| 噜噜噜色噜噜噜久久| 无码精品久久一区二区三区| 久久丝袜精品中文字幕| 伊人久久大香线蕉精品不卡| 亚洲精品无码久久久久AV麻豆| 热久久国产欧美一区二区精品| 精品久久久久久无码免费|