#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 如果初始檔案是反序的,需要進...