c语言排序系统代码怎么写,排序概述(c语言)(示例代码)
排序問(wèn)題可以說(shuō)是算法入門中的入門了,可盡管如此,算法這個(gè)東西還是讓許多初學(xué)者傷透了腦筋(such as me~)。But,然而,但是,排序小結(jié)來(lái)了(基于c語(yǔ)言),希望能給讀者包括筆者本身帶來(lái)理解上的新體驗(yàn)。
1.冒泡排序。
所謂冒泡排序,從字面就可大體了解,對(duì)一系列數(shù),對(duì)滿足條件的數(shù),讓其依次“冒泡浮出”。其基本思路是:每次將相鄰兩個(gè)數(shù)進(jìn)行比較,將小的數(shù)(或大的數(shù),看你需要逆序還是順序)調(diào)到前頭去。這樣,假如有6個(gè)數(shù),我們第一次檢索這六個(gè)數(shù),找出最小的放在第一個(gè)位置上;再進(jìn)行下一次檢索,這時(shí)只要檢索余下的五個(gè)數(shù),找出次小者放在第二個(gè)位置。按照這個(gè)思路,依次進(jìn)行即可。
從上面的分析我們可以看出:如果有n個(gè)數(shù)要進(jìn)行比較,我們要進(jìn)行n-1趟比較,在第一趟中要進(jìn)行n-1次兩兩比較,第j趟中要進(jìn)行n-j次比較。
具體體現(xiàn)在代碼上,就是:(我以十個(gè)數(shù)為例)
需要說(shuō)明的是,這里我把排序的步驟寫在了一個(gè)子函數(shù)里,用main函數(shù)去調(diào)用這個(gè)函數(shù)。
2.選擇排序。
可以看到,冒泡已經(jīng)比if(a>b)這種最簡(jiǎn)單的比較大小的做法優(yōu)越很多了,可是,即是如此,系統(tǒng)還是要做比較大的計(jì)算量。有沒有更快一點(diǎn)的方法呢?選擇法。
選擇法的基本思路是:把第i小的數(shù)直接放在第i的位置上,直接實(shí)現(xiàn)排序。
c語(yǔ)言代碼如下:
在處理很多數(shù)據(jù)時(shí),選擇法明顯比冒泡快得多。他的時(shí)間復(fù)雜度是O(logn)。
3.二分查找。(此法更多的是用來(lái)檢查一列數(shù)中是否有某數(shù),若沒有,將此數(shù)插入到數(shù)列中,使得數(shù)列依然滿足大小順序排列。)
二分查找又稱插入排序。
兩側(cè)開始,看中分位置的數(shù),檢查該數(shù)是否為所找的數(shù)。若不是,再平分,再查找。依次進(jìn)行下去。直到:原先第一位置的數(shù)的標(biāo)記大于了最后位置的數(shù)的標(biāo)記為止。
若沒有,插入新數(shù)的時(shí)候,只要將該數(shù)之后的數(shù)整體向右移動(dòng)一個(gè)位置,空出來(lái)的位置填進(jìn)此數(shù)。
看代碼:(我先初始化一個(gè)數(shù)組,有則輸出yes,沒有則插入這個(gè)數(shù)并輸出新數(shù)組)
一口氣介紹了三種方法,還請(qǐng)大神們指點(diǎn)一二。個(gè)人覺得有這個(gè)方針:倘若你暫時(shí)不理解,不妨先背過(guò)一個(gè)排序方法(我寫的子函數(shù)就行),用著用著,就會(huì)柳暗花明,豁然開朗~~~~
總結(jié)
以上是生活随笔為你收集整理的c语言排序系统代码怎么写,排序概述(c语言)(示例代码)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 4.4平衡线和3.5的区别
- 下一篇: 命令 启动顺序_笔记一: 启动选项与系统