下面這個專題我想主要總結一些各種不同的排序

2021-06-24 18:19:45 字數 1010 閱讀 8075

排序這個問題不管是什麼語言都可以說是乙個永遠的問題,不同的排序方法適應的環境和演算法的效率有所不同。下面我將逐一介紹常見的幾種排序演算法,如有什麼不對的地方希望大家積極的跟我討論。

首先介紹一下排序的穩定性:

例:編號總分1

5552

4343

4564

555 按總分排序以後:

編號總分

1555

4555

3456

2434

這個排序就是穩定的。

而這個排序就是不穩定的:

編號總分

4555

1555

3456

2434

關於排序其它的方面就不多敘述了,直接進入我們今天的主題:

首先是經典的氣泡排序。它的時間複雜度是o(n).

氣泡排序是一種交換排序,它的基本思想是:兩兩比較相鄰記錄的關鍵字,如果反序則交換,直到沒有反序的記錄為止。

實現**是:

void bubblesort(sqlist *l)

} }}

這個演算法嚴格來說不是正宗的冒泡法,但是由他可以得出冒泡法的原型,它最大的缺點就是效率低。

void bubblesort(sqlist *l)

} }}

通過這兩個演算法,我們大致可以看出他們之間的差別。

當i=2的時候,變數j由8反向迴圈到2,逐個比較,在將關鍵字2交換到第二個位置的同時,也將關鍵字4和3有所提公升,比第一種方式的效率有所提公升。

但是這兩種方法均有乙個缺陷,加入這樣乙個序列,在交換完第一次之後,序列已經變成有序的,再比較就沒有意義,因此大神又想到了解決的方法,看看下面的演算法:

void bubblesort(sqlist *l)

} }}

這個演算法就省去了之前的困難,它增加乙個標誌,比較8和7,7和6...2和1如果均滿足後者比前者大就不需要排序了。

當年我總結的一些話

一 1 有些事可以交給編譯器做,但有些事必須自己親自動手去做!2 模板的宣告和定義必須放在標頭檔案,因為模板不是真正的函式。3 要習慣做一些初始化工作,儘管初始值與實際值不能等同。4 做串列埠測試時,一定要注意波特率和晶振的選擇。5 遇到問題,不能太絕對地說是哪一方面出了問題,除非有十足的把握。6 ...

我對指標的一些總結

首先我很推薦看華清裡面講的c指標還有c語言中文網裡面對c指標的講解。指標變數加一是向位址大的方向移動乙個目標資料 陣列名相對於陣列元素都是進了指標一級 指標陣列很適合操作二維陣列 指標陣列的陣列名其實就是個二級指標 下面摘自c語言中文網,理解 int 在不同的場景下有不同的作用 可以用在指標變數的定...

下面總結一些在HTML中經常使用到的快捷鍵

使用的編輯器是vs code 首先是很基礎的 ctrl s 儲存 ctrl a 全選 ctrl x ctrl c ctrl v 剪下,複製,貼上 ctrl z ctrl y 撤銷,前行 然後是個人感覺在程式設計中更實用的 shift end 以游標位置為頭開始,選中一行 shift home 以游標...