sort與nth_element使用
sort與nth_element使用
- sort
sort函式是C++中對於跟定區間的所有元素進行排序的函式,預設為升序排序,sort時間複雜度為O(nlog2n),因為sort函式底層使用的是快速排序演算法。包含在algorithm標頭檔案中
#include <algorithm>
//sort函式用法
sort(start, end, cmp);
//start指的是排序陣列的第一個位置、
//end指的是排序陣列最後一個位置的下一位
//cmp為可選項,可不填,也可以自己定義排序方法
函式名 | 功能描述 | 底層實現 |
---|---|---|
sort | 對於給定區間元素進行描述(不穩定) | 快速排序 |
stable_sort | 對於給定區間元素進行穩定排序 | 歸併排序 |
partial_sort | 對於給定區間元素進行部分排序 | 交換元素儲存位置 |
partial_sort_copy | 對於給定區間元素複製並且排序 | 拷貝後交換元素儲存位置 |
is_sorted | 判斷一個區間是否排好序 | 未知? |
partition | 使得符合某個條件的元素放在前面 | 快速排序 |
stable_partition | 相對穩定的使得某個條件元素放在前面 | 快速排序 |
nth_element | 找到給定區間對應元素的值 | 快速選擇排序 |
- nth_element
nth_element()方法主要是求給定區間第k小的元素,與普通的排序不同,它只是選取給定的第k個元素大小所在的固定的位置,底層實現是快速選擇排序。值得注意的是nth_element得到的元素序列是亂序的,但是第k個元素位置是正確的
//nth_element使用方法
nth_element(start, start + k, end);
//start表示陣列開始的位置
//start + k表示陣列升序情況下第k個位置應該對應的資料元素
//end表示陣列結束的位置
C++reference有對應nth_element的講解
// nth_element example
#include <iostream> // std::cout
#include <algorithm> // std::nth_element, std::random_shuffle
#include <vector> // std::vector
bool myfunction (int i,int j) { return (i<j); }
int main () {
std::vector<int> myvector;
// set some values:
for (int i=1; i<10; i++) myvector.push_back(i); // 1 2 3 4 5 6 7 8 9
std::random_shuffle (myvector.begin(), myvector.end());
// using default comparison (operator <):
std::nth_element (myvector.begin(), myvector.begin()+5, myvector.end());
// using function as comp
std::nth_element (myvector.begin(), myvector.begin()+5, myvector.end(),myfunction);
// print out content:
std::cout << "myvector contains:";
for (std::vector<int>::iterator it=myvector.begin(); it!=myvector.end(); ++it)
std::cout << ' ' << *it;
std::cout << '\n';
return 0;
}
possible output
myvector contains: 3 1 4 2 5 6 9 7 8
相關文章
- Python中sort()方法的使用Python
- nth_element 找第k大的數
- Python 排序---sort與sorted學習Python排序
- 【Oracle】排序與sort_area_sizeOracle排序
- Insertion Sort and Merge Sort
- 排序(對於 sort 函式的使用)排序函式
- 使用sort方法實現陣列升序降序陣列
- JavaScript 中陣列 sort() 方法的基本使用JavaScript陣列
- topo sort
- sort排序排序
- Queue Sort
- JavaScript sort()JavaScript
- C++中使用sort對常見容器排序C++排序
- golang sort.Sort () 排序演算法學習Golang排序演算法
- 關於stable_sort()和sort()的區別:
- sort()函式函式
- Leetcode Sort ColorsLeetCode
- Leetcode Sort ArrayLeetCode
- REPLACEMENT SELECTION SORT
- Sort Array By Parity
- Polyphase Merge Sort
- 演算法與資料結構基礎 - 排序(Sort)演算法資料結構排序
- Linux裡面sort命令的作用是什麼?如何使用?Linux
- Python排序傻傻分不清?一文看透sorted與sort用法Python排序
- 快速排序 (Quick Sort)排序UI
- Collections sort()排序方法排序
- Java Arrays.sort()Java
- 堆排序 Heap Sort排序
- Elasticsearch script sort 排序Elasticsearch排序
- js裡關於Array.prototype.sort分析及日常使用技巧JS
- 拼接數字(知識點:string的使用和sort的cmp)
- 009 Linux 檔案大小統計與排序( du於df和sort)Linux排序
- Out of sort memory, consider increasing server sort buffer size的兩種情況IDEServer
- Linux sort 命令詳解Linux
- CodeForces 1873A Short Sort
- 希爾排序(Shell Sort)排序
- 計數排序 - Counting Sort排序
- LeetCode | 148. Sort ListLeetCode