學習c++可以使用stl模板實現對陣列的快速排序。(自動從小到大排)
語法:
sort
(a, a + n)
;//a是陣列名,n是陣列長度
定義陣列:
int a[11]
=;
排序前:
排序前:18
94241
1811
6412
使用sort函式:
sort
(a, a + n)
;
排序後:
排序後:12
48911
1218
4164
需要注意的是,sort函式起點一般為陣列第乙個元素,即a[0],如果需要從函式a[0]後幾位開始排,就在sort函式內陣列後加幾。
即如果從a[1]開始排:
sort
(a +
1, a +
1+ n)
;
當然我們有時候也可能需要從大往小排的時候我們應該怎麼辦呢,這時候我們就需要自定義乙個cmp函式去調整排序順序。
bool
cmp(
int a,
int b)
我們使用自定義cmp函式之後:
sort
(a, a + n,cmp)
;
此時排序後如下:
排序後:
6441
1812119
8421
就變成由大往小排了。
當然我們也可以使用一些別的方法:
sort函式的第三個引數可以用這樣地語句告訴程式,你所採用的排序原則:
less《資料型別》()//從小到大排序greater《資料型別》()//從大到小排序
sort
(a, a + n, greater<
int>()
);排序前:18
94241
1811
6412
排序後:
6441
1812119
8421
sort
(a, a + n, less<
int>()
);排序前:18
94241
1811
6412
排序後:12
48911
1218
4164
我們可以通過自己的需要選擇使用一些方法。
在日常學習過程中,我們可能需要對結構體內部的某個變數進行排序,那我們在這時候是否能夠繼續使用sort函式呢。
當然我們還是可以繼續使用的,不過我們可能要對cmp函式做一些改變了,讓它能夠適合我們繼續使用。
先定義乙個結構體:
struct stu
arry[10]
=;
我們需要對cmp函式做一些改變,如下:
bool
cmp(stu x, stu y)
//此時我們就需要給cmp函式傳進改結構體名,和兩個變數來接收資料
接下來就和使用sort函式重排陣列一樣了。
以上內容只是個人學習的一些總結和體會,如有錯誤,希望大佬們能夠進行指正。
排序 快速排序(C )
1 演算法描述 1.1 設當前參加排序的陣列為array 0.n 1 選擇乙個元素 通常稱該元素為基準元素 作為基準元素 將小於或者等於基準元素的所有元素都移到基準元素的左邊 把大於或者等於基準元素的所有元素都移到分界元素的右邊 執行完 2 3 步驟後,基準元素左邊元素序列,基準元素,基準元素右邊元...
排序 快速排序(C )
如果看不懂這些乾巴巴的理 字,那就先不用看了,下面 中有詳細的注釋,大家可以先跟著 走幾遍,回過頭來再看這些文字描述,總之 紙上得來終覺淺,絕知此事要躬行。排序演算法哪家強,從實際應用的角度上將,快排表現很好。很自然地,人們會覺得短陣列比長陣列更好處理,因此可能會想到將原始陣列分為若干各子部分然後分...
快速排序 c
快速排序應該是目前最快,也是最常用的一種排序演算法。它將乙個集合劃分成兩個子集合,然後繼續遞迴來完成最終排序。具體做法 1.選取集合最右端的元素作為乙個參照物,稱之為 樞紐 pivot 2.開始計算分割位置。在計算時,進行元素交換,確保左側元素都小於樞紐,而右側都大於樞紐。3.根據分割位置,分別遞迴...