c 中快速排序

2022-06-28 08:54:09 字數 2435 閱讀 6074

(一)為什麼要用c++標準庫里的排序函式

sort()函式是c++一種排序方法之一,學會了這種方法也打消我學習c++以來使用的氣泡排序和選擇排序所帶來的執行效率不高的問題!因為它使用的排序方法是類似於快排的方法,時間複雜度為n*log2(n),執行效率較高!

ps:如果需要排序的樹木較多的話,這就是乙個極好的排序方法.........................................

(二)c++標準庫里的排序函式的使用方法

i)sort函式包含在標頭檔案為#include的c++標準庫中,呼叫標準庫里的排序方法可以不必知道其內部是如何實現的,只要出現我們想要的結果即可!

ii)sort函式有三個引數:

(1)第乙個是要排序的陣列的起始位址。

(2)第二個是結束的位址(最後一位要排序的位址)

(3)第三個引數是排序的方法,可以是從大到小也可是從小到大,還可以不寫第三個引數,此時預設的排序方法是從小到大排序。

sort函式使用模板:

sort(start,end,排序方法)

下面就具體使用sort()函式結合對陣列裡的十個數進行排序做乙個說明!

例一:sort函式沒有第三個引數,實現的是從小到大

#include#include

using

namespace

std;

intmain()

,i;

for(i=0;i<10;i++)

printf("\n

");sort(a,a+10

);

for(i=0;i<10;i++)

printf("\n

");return

0;

}

例二通過上面的例子,會產生疑問:要實現從大到小的排序腫麼辦?

這就如前文所說需要在sort()函式裡的第三個引數裡做文章了,告訴程式我要從大到小排序!

需要加入乙個比較函式 complare(),此函式的實現過程是這樣的

bool complare(int a,int b)//

布林變數,只去1和0的變數.

這就是告訴程式要實現從大到小的排序的方法!

#include#include

using

namespace

std;

bool complare(int a,int

b)//

去試試c語言行不行.

intmain()

;

for(i=0;i<10;i++)

printf(

"%d

",a[i]);

printf("\n

");sort(a,a+10,complare);//

在這裡就不需要對complare函式傳入引數了,

//這是規則

for(i=0;i<10;i++)

printf(

"%d

",a[i]);

printf("\n

");return0;

}

例三:通過上面例

一、二的方法雖然實現了從大到小和從大到小的排序,這樣做還是有點麻煩,因為還需要自己編寫告訴程式執行何種排序的原則的函式,c++標準庫強大的功能完全可以解決這種麻煩。

sortt函式的第三個引數可以用這樣的語句告訴程式你所採用的排序原則

less《資料型別》()//從小到大排序

greater《資料型別》()//從大到小排序

結合本例子,這樣的就可以完成你想要的任何一種排序原則了

#include#include

using

namespace

std;

intmain();

for(int i=0;i<10;i++)

cout

sort(a,a+10,less());

for(int i=0;i<10;i++)

cout

return0;

}#include

#include

using

namespace

std;

intmain();

for(int i=0;i<10;i++)

cout

sort(a,a+10,greater());

for(int i=0;i<10;i++)

cout

return0;

}

例四:利用sort函式還可以實現對字元的排序,排序方法大同小異,下面就把程式範例展示一下

#include#include

using

namespace

std;

intmain()

c 中快速排序函式

一 為什麼要用c 標準庫里的排序函式 sort 函式是c 一種排序方法之一,學會了這種方法也打消我學習c 以來使用的氣泡排序和選擇排序所帶來的執行效率不高的問題!因為它使用的排序方法是類似於快排的方法,時間複雜度為n log2 n 執行效率較高!ps 如果需要排序的樹木較多的話,這就是乙個極好的排序...

排序 快速排序(C )

1 演算法描述 1.1 設當前參加排序的陣列為array 0.n 1 選擇乙個元素 通常稱該元素為基準元素 作為基準元素 將小於或者等於基準元素的所有元素都移到基準元素的左邊 把大於或者等於基準元素的所有元素都移到分界元素的右邊 執行完 2 3 步驟後,基準元素左邊元素序列,基準元素,基準元素右邊元...

排序 快速排序(C )

如果看不懂這些乾巴巴的理 字,那就先不用看了,下面 中有詳細的注釋,大家可以先跟著 走幾遍,回過頭來再看這些文字描述,總之 紙上得來終覺淺,絕知此事要躬行。排序演算法哪家強,從實際應用的角度上將,快排表現很好。很自然地,人們會覺得短陣列比長陣列更好處理,因此可能會想到將原始陣列分為若干各子部分然後分...