C STL中sort用法介紹

2021-08-28 14:10:17 字數 2035 閱讀 6624

前情提要:

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...