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