前情提要:0、要使用sort,首先需要包含標頭檔案< algorithm>
1、sort函式可以指定兩個引數,也可以指定三個引數。
(1)第乙個是要排序的陣列的起始位址。
(2)第二個是結束的位址(最後一位要排序元素的後一位的位址)
(3)第三個引數是排序的方法,可以是從大到小也可是從小到大,還可以不寫第三個引數,此時預設的排序方法是公升序排序。
2、它使用的排序方法是類似於快排的方法,時間複雜度為o( n*log2(n) )
#include
#include
#define size(arr) ((sizeof(arr)) / (sizeof(arr[0])))
intmain()
;for
(int i =
0;i <
size
(arr)
; i++
) std:
:cout << arr[i]
<< std:
:endl;
std:
:sort
(arr, arr +10)
;for
(int i =
0;i <
size
(arr)
; i++
) std:
:cout << arr[i]
<< std:
:endl;
return0;
}
#include
#include
#define size(arr) ((sizeof(arr)) / (sizeof(arr[0])))
//@sort預設為公升序排序,所以我自定義乙個降序排序的規則:較大者排到前面
//@這是第一種自定義規則的方式:
bool compare_int
(const
int& elem1,
const
int& elem2)
//@這是第二種自定義規則的方式:
struct intcompareclass
} intobjectcom;
//@以上兩種方式適合自定義資料結構之間的比較
//如果是內建資料型別之間的大小比較,也可以採用stl中的演算法搞定
//公升序排序
//sort(arr, size(arr), std::less());
//降序排序
//sort(arr, size(arr), std::greater());
intmain()
;int arr2=
;
std:
:sort
(arr1, sort1 +
size
(sort1)
, compare_int)
;for
(int i =
0; i <
size
(arr1)
;++i)
std:
:cout<:endl;
std:
:sort
(arr2, arr2 +
size
(arr2)
, intobjectcom)
;//c++11提供了lambda匿名函式,也可以用於sort
std:
:sort
(arr2, arr2 +
size
(arr2),[
&](const
int& elem1,
const
int& elem2)
)for
(int i =
0; i <
size
(arr2)
;++i)
return0;
}//這段程式的執行結果就是:98
7654
321
C STL庫中sort函式用法
首先sort函式因為它使用的排序方法是類似於快排的方法,時間複雜度為n log2 n 執行效率較高。所以一般資料量很大的資料排序都可以用它來進行。1 sort 函式的標頭檔案為 include 2 sort函式有三個引數 第乙個是要排序的陣列的起始位址。第二個是結束位址 最後一位要排序的位址 第三個...
C STL之sort的用法總結
sort用法一 對於基本型別的陣列大小從小到大排序 sort 陣列名 n1,陣列名 n2 n1和n2都是int型別的表示式,可以包含變數 如果n1 0,則 n1可以不寫 將陣列中下表範圍為 n1,n2 的元素從小到大排序。下標n2不在排序範圍內。sort用法二 對於元素型別為t的基本型別陣列大小從大...
C STL中sort和C中qsort比較
c stl中sort用法 include 一 sort begin,end,method sort 目前採用的是加強版的快速排序,是結合內插排序的快速排序 目的在於克服快速排序在最初情況 元素基本有序 的效率底下。1.sort中method 預設用法 從小到大排序 int a 陣列 sort a,a...