sort排序講解

2021-10-08 21:53:08 字數 2421 閱讀 9646

#include

int a=

;sort

(a,a+3)

;//對第乙個到第三個元素進行排序

//實際上就是對陣列下標為0,1,2的元素排序

//所以假設給定l1到r1排序

//sort(a+l1-1,a+r1);

int length =

sizeof

(a)/

sizeof

(a[0])

;//計算陣列的長度

for(

int i=

0;i)

結果輸出為:

135

52

上面的是公升序的排列方式,如果要使用降序的排列方式

增加乙個greater()

int a=

;sort

(a,a+

3,greater<

int>()

);int length =

sizeof

(a)/

sizeof

(a[0])

;for

(int i=

0;i)

輸出結果為

321

52

對於一些特殊的結構體或者特殊的要求,我們可以自己構造cmp函式來讓程式按照cmp函式的要求進行排序,下面是兩道例子

a整數排序

題目要求

我們有 n 個正整數,均小於 10000。現在需要將這些正整數按照除以 3的餘數從小到大排序,即除以 3 餘 0 的數排在除以 3 餘 1 的數前面,除以 3 餘 1 的數排在除以 3 餘 2 的數前面。如果餘數相等,則按照正整數的值從小到大排序。

構造的cmp函式

#include

#include

#include

using

namespace std;

bool

cmp(

int a,

int b)

int a[

110]

;int

main()

sort

(a,a+n,cmp)

;for

(int i=

0;i)return0;

}

這裡就做到了如果餘數不相等,按照餘數從小到大的順序輸出,如果餘數相等按照原數從小到大的順序輸出

b無條件的結構體排序

這裡小於號就是按照從小到大的順序來進行排序的

struct student

bool

cmp(student x,student y)

c有條件的結構體排序

題目要求

假設結構體裡面成績是乙個四個空間的陣列,學生們按照第乙個成績排序,誰成績好誰就排序在前面,相等的話看第二個,一次類推

struct student 

;bool

cmp(student x,student y)

這樣的話是大於號,就是按照從大到小的順序來進行排列的,在乙個程式當中可以多個排序的方法,按照名字排序或者成績排序,靈活的使用就可以了

d浮點數排序

題目要求

我們有 nnn 個正浮點數,均小於 10000.0。現在需要將這些浮點數按照離它最近的整數的差從小到大排序,浮點數與距離最近的整數的差越小,這個浮點數的排位越靠前;如果差相等,按照浮點數的值從小到大排序。

注意問題

bool型別的函式不要在意返回的具體數值,主要是返回乙個判斷的邏輯,另外介紹四個函式,標頭檔案要包含cmath

1.fabs()函式:

(取乙個數的絕對值)

2.ceii()函式:

(對乙個數向上取整,但是返回型別是double)

3.floor()函式:

(對乙個數向下取整,但是返回型別是double)

4.round()函式

(對乙個數四捨五入的取整,計算結果也為double)

5.(int)(x+0.5)這個也能實現對乙個數進行四捨五入

#include

#include

#include

#include

using

namespace std;

#define epsilon 1e-6

#define mode 100000007

double num[

105]

;bool

cmp(

double x,

double y)

intmain()

return0;

}

排序sort 排序用法

語法 array sort fun 引數fun可選。規定排序順序。必須是函式。注 如果呼叫該方法時沒有使用引數,將按字母順序對陣列中的元素進行排序,說得更精確點,是按照字元編碼的順序進行排序。如果想按照其他規則進行排序,就需要提供比較函式,該函式要比較兩個值,然後返回乙個用於說明這兩個值的相對順序的...

sort快速排序

include include 用sort必須加入的標頭檔案 using namespace std struct text bool cmp1 int a,int b bool cmp2 char a,char b bool c text a,text b bool cmp4 text a,tex...

Sort 氣泡排序

include using namespace std c compare times m move times 如果是正序的,一趟掃瞄即可完成排序,所需的關鍵字比較次數c和記錄移動次數m均達到最小值 cmin n 1 mmin 0 即氣泡排序最好的時間複雜度是 o n 如果初始檔案是反序的,需要進...