亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

C語言中幾種排序方法的探討

2020-02-24 14:35:11
字體:
來源:轉載
供稿:網友

??? C語言中幾種排序方法的探討,排序是程序設計中非常重要的內容,它的功能是將一組無序的的數據,排列成有序的數據序列,經過排列后的數據,要么是從大到小排列,要么是從小到大排列。一般也只有這兩種情況。

??? 例如我們統計班級學生的成績,那么一般是按照學號來進行統計,原來成績是無序排列的,這樣的話非常不適合于我們對成績的查詢,那么一般我們進行成績查詢之前,先進行排序,如按照高分到低分的排序,這樣可以很快地查出本班的最高分和最低分,和成績比較靠前或靠后的學生。
排序有很多種方法,常用的有三種:冒泡排序、選擇排序、插入排序等,下面我們就對這三種方法做一下分析和比較,以便大家能夠更好的理解和應用。

一、冒泡排序

??? 1、冒泡排序的基本思想:對于n個數進行排序(現假定是從大到小排序,以下均按此進行),將相鄰兩個數依次比較,將大數調在前頭:也就是說第一個數和第二個數比較,大數放前,小數放后,第二個和第三個進行比較,大數放前、小數放后,然后依次類推。。。經過第一輪比較以后,我們找到一個最小數在最下面(沉底)。然后進行下一輪比較,最后一個數就不用再參加比較了,所以本輪就可以少比較一次。
很顯然,需要用雙重循環來設計這個問題,外層循環控制進行的輪數,內層循環控制每輪比較的次數,那么到底需要多少輪、每輪需要多少次,我們通過一個實例看一下:

2、排序過程舉例:

外循環
1輪
2輪
3輪
4輪
內循環
5個數比較4次
4個數比較3次
3個數比較2次
2個數比較1次
7
5
8
6
9
?
1次
2次
3次
4次
1次
2次
3次
1 次
2次
1次
7
5
8
6
9
7
8
5
6
9
7
8
6
5
9
7
8
6
9
5
8
7
6
9
5
8
7
6
9
5
8
7
9
6
5
8
7
9
6
5
8
9
7
6
5
9
8
7
6
5
?
最小的數5沉底,其余4個數繼續比較
次小數6沉底,其余3個數
7沉底,其余2個數比較
最后兩個數一次比較

?

??? 那么通過這個排序過程,我們了解了怎樣去進行排序,那么到底誰是氣泡呢,我們可以從中找出答案,那么從大到小進行排序,較大的一些數就是氣泡。隨著排序的進行,氣泡逐步上升。

??? 從這個排序過種中,還可以看出,5個數實際經過4輪就可以了,實踐證明,n個數最多需要n-1輪排序就可以了。

?

??? 3、冒泡排序的程序如下:


for(i=0;ifor(j=0;j???? if(a[j]?? {t=a[j];a[j]=a[j+1];a[j+1]=t;}


在此程序段的上面加上輸入部分和在程序段加上排序后的輸出。
程序的改進:

?

?? 4、算法的改進:

從上面的排序的過程可以看出,如果一個已經排好序的一組數或者經過很少的輪數就可以排完這些數,但是循環還是要繼續進行,這樣設計出的程序浪費了大量的時間,所以對一這個算法我們可以重新設計。
?經過修改后的程如下:


for(i=0;i{
swap=1;
for(j=0;j???? if(a[j]?????? {t=a[j];a[j]=a[j+1];a[j+1]=t;swap=0;}
}

?

二、選擇排序

??? 1、排序的基本思想:先從第一個數開始起,用第一個數和其它的數進行比較,如果比第一個數大就交換位置,否則不進行交換,這樣經過第一輪比較我們就能夠找出最大值放在第一位置,然后從第二個位置起再找次大數,這樣依次下去,就可以進行整個數的排序,實踐證明,n個數最多需要n-1輪排序就可以了。
??????? 2、排序過程舉例:

?

外循環
1輪
2輪
3輪
4輪
內循環
5個數比較4次
4個數比較3次
3個數比較2次
2個數比較1次
7
5
8
6
9
?
1次
2次
3次
4次
1次
2次
3次
1 次
2次
1次
7
5
8
6
9
8
5
7
6
9
8
5
7
6
9
9
5
7
6
8
9
7
5
6
8
9
7
5
6
8
9
8
5
6
7
9
8
6
5
7
9
8
7
6
5
9
8
7
6
5
?
最大的數9找到,其余4個數找次大數
次大數8找到,其余3個數找
7找到,其余2個數找
最后兩個數一次比較


選擇排序較冒泡容易理解,程序編寫也要相對容易一些。

?


for(i=0;ifor(j=i+1;j???? if(a[i]?? {t=a[i];a[i]=a[j];a[j]=t;}


對于選擇排序,我們也可以看到一個問題,如第一輪排序中,我們要找的是9才是最大值,所以其它的交換完全沒有必要進行,其它各輪都存在這樣的情況,所以我們可以想辦法取消這種情況,也就是說我們真正找到的最大值的位置后再進行交換。

?

?


for(i=0;i{ p=i;
for(j=i+1;j???? if(a[p]?????? p=j;
??? if(p!=i)
{t=a[i];a[i]=a[j];a[j]=t;}
}


這樣算法經過改進以后就較好地解決了這個問題。

?

三、插入排序

1、插入排序基本思想:(假定從大到小排序)依次從后面拿一個數和前面已經排好序的數進行比較,比較的過程是從已經排好序的數中最后一個數開始比較,如果比這個數,繼續往前面比較,直到找到比它大的數,然后就放在它的后面,如果一直沒有找到,肯定這個數已經比較到了第一個數,那就放到第一個數的前面。
那么一般情況下,對于采用插入排序法去排序的一組數,可以先選 取第一個數做為已經排好序的一組數。然后把第二個放到正確位置
2、程序的編寫如下:


for(i=1;ifor(j=i;j>0;j--)
???? if(a[j]?? {t=a[j];a[j]=a[j-1];a[j-1]=t;}


對于這個程序也有需要修該的地方,以上程序的排序實際上也是基于交換思想進行排序,也可以進行真正意義上的排序,即:先把待排序的數取出來,然后找出應該插入的位置,找到后,將待插入位置后的數據統統后移,原待排數據已經取出放于臨時變量中。然后把這個數據插入到正確的空余位置就可以了。

那么對于基于交換的插入排序,沒有找到位置之前,也進行了交換,所以我們也可以進行程序的改進。那么此程序的改進,肯定不能進行減少交換次數,因為我們知道如果到找到位置再進行交換,那么肯定已經找亂了原來的排序結果,所以只能是找位置,騰位置、放元素這幾道手續。

?

?


main()
{
int i,j,t,a[]={12,11,2,3,6,67,89,0,1,3};
?? for(i=1;i?? {t=a[i];
j=i-1;
while(j>=0&&t>a[i])
???? {a[j+1]=a[j];
????? j--;
}
??? a[j+1]=t;??
?for(i=0;i?? printf("%d ",a[i]);
?? printf("/n");
}


以上是C語言中幾種排序方法的探討,關于排序問題,是程序設計中的一項非常重要的內容,我們這在這里只做簡單的探討,以備C語言的初學者或正在學習C語言編程的愛好者使用。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
色悠悠国产精品| 国产精品草莓在线免费观看| 亚洲xxx大片| 国产精品女主播| 26uuu国产精品视频| 日韩在线免费视频观看| 在线视频欧美日韩精品| 久久久999精品视频| 欧美老妇交乱视频| 欧美大片va欧美在线播放| 欧美另类69精品久久久久9999| 国产一区二区三区三区在线观看| 久久综合色影院| 91麻豆国产精品| 亚洲日韩欧美视频一区| 国产精品在线看| 欧美日韩一区二区三区在线免费观看| 国产日产亚洲精品| 91高清视频免费| 国产剧情久久久久久| 欧美一级大片视频| 亚洲黄色av网站| 久久天天躁狠狠躁夜夜躁| 久久久精品久久久久| 日韩在线免费视频观看| 亚洲人成自拍网站| 亚洲国产高清自拍| 成人精品久久av网站| 亚洲欧美日韩国产中文专区| 国产日韩欧美在线看| 国产精品视频不卡| 色偷偷88888欧美精品久久久| 亚洲午夜女主播在线直播| 久久综合免费视频| 亚洲美女性视频| 亚洲国产成人精品久久久国产成人一区| 不卡在线观看电视剧完整版| 亚洲视频综合网| 国产一区二区三区在线观看视频| 亚洲白拍色综合图区| 国内精品模特av私拍在线观看| 中文日韩在线观看| 欧美一级视频一区二区| 国产精品久久久久aaaa九色| 亚洲国产女人aaa毛片在线| 亚洲第一偷拍网| 欧美—级a级欧美特级ar全黄| 日韩精品在线看| 69av在线播放| 国产精品久久久久久亚洲调教| 欧美成人激情图片网| 欧美日韩国产在线看| 国产精品入口免费视频一| 911国产网站尤物在线观看| 亚洲视频在线免费看| 亚洲精品一区久久久久久| 欧美另类第一页| 久久躁日日躁aaaaxxxx| 性欧美长视频免费观看不卡| 日韩中文字幕在线| 日韩大陆毛片av| 久久九九免费视频| 国产色视频一区| 欧美自拍视频在线观看| 国产精品电影网站| 韩国美女主播一区| 亚洲视频日韩精品| 国产精品一区二区三区成人| 不用播放器成人网| 国产日本欧美在线观看| 亚洲图片制服诱惑| 欧美黄色三级网站| 欧美精品videofree1080p| 久久久久久噜噜噜久久久精品| 久久久精品国产网站| 狠狠躁夜夜躁久久躁别揉| 亚洲白拍色综合图区| 久久免费视频这里只有精品| 欧美色播在线播放| 国产亚洲aⅴaaaaaa毛片| 日本在线精品视频| 亚洲女成人图区| 国产精品亚洲片夜色在线| 国产精品91在线| 久久久亚洲天堂| 北条麻妃一区二区三区中文字幕| 国产综合视频在线观看| 91精品久久久久久久久久久久久久| 日本国产精品视频| 国产精品三级久久久久久电影| 2019国产精品自在线拍国产不卡| 欧美性xxxx在线播放| 国产亚洲精品日韩| 成人高h视频在线| 九九热精品视频国产| 亚洲一区美女视频在线观看免费| 久久久极品av| 性色av一区二区三区红粉影视| 国产中文欧美精品| 美女999久久久精品视频| 亚洲肉体裸体xxxx137| 欧美与黑人午夜性猛交久久久| 国产精品扒开腿爽爽爽视频| 精品久久久一区二区| 九色精品美女在线| 高清欧美性猛交xxxx| 精品视频在线播放| 国产精品成人久久久久| 成人性生交xxxxx网站| 欧美亚洲国产精品| 国产精品久久久久久久久久久久久久| 欧美情侣性视频| 日韩精品欧美国产精品忘忧草| 夜夜狂射影院欧美极品| 国产精品va在线播放| 成人黄色大片在线免费观看| 亚洲成人av资源网| 亚洲影院色无极综合| 日韩欧美国产视频| 国产成人精品午夜| 午夜精品一区二区三区在线| 庆余年2免费日韩剧观看大牛| 亚洲视频在线免费看| 国产伦精品免费视频| 精品日韩中文字幕| 久久全国免费视频| 日韩中文字幕精品视频| 亚洲**2019国产| 欧美黄色片视频| 亚洲精品日韩av| 国产精品69久久| 欧美巨乳美女视频| 欧美国产日韩在线| 日韩精品视频中文在线观看| 国产丝袜精品第一页| 2019中文字幕在线观看| 国产精品欧美日韩久久| 国产在线高清精品| 国产在线视频不卡| 日韩美女视频在线观看| 91久久久久久国产精品| 精品国产一区二区三区四区在线观看| 亚洲精品自在久久| 国产精品久久久久久久久久久不卡| 久久综合网hezyo| 中文字幕视频在线免费欧美日韩综合在线看| 国产专区精品视频| 国产91精品不卡视频| 91精品国产91久久久久久| 日韩高清av一区二区三区| 久久久中文字幕| 日韩中文在线中文网三级| 欧美黑人极品猛少妇色xxxxx| 亚洲欧美在线看| 日韩有码在线视频| www.久久久久久.com| 欧美性猛交xxxxx免费看| 亚洲视频电影图片偷拍一区| 国产精品成人av性教育| 亚洲毛片一区二区| 国产日韩欧美视频| 久久久久久综合网天天| 日韩av高清不卡| 欧美精品在线免费播放|