函數名 | 功能描述 |
---|---|
sort | 對給定區間全部元素進行排序 |
stable_sort | 對給定區間全部元素進行穩定排序 |
partial_sort | 對給定區間全部元素部分排序 |
partial_sort_copy | 對給定區間複製並排序 |
nth_element | 找出給定區間的某個位置對應的元素 |
is_sorted | 判斷一個區間是否已經排好序 |
partition | 使得符合某個條件的元素放在前面 |
stable_partition | 相對穩定的使得符合某個條件的元素放在前面 |
sort用法
咱們最經常使用的sort函數,sort函數有升序和降序,默認爲升序ios
//默認用法(升序) #include<iostream> using namespace std; #include<algorithm> #include<cstdlib> int main() { int n; cin >> n; int a[200]; for (int i = 0; i < n; i++) { cin >> a[i]; } sort(a,a+n); for (int i = 0; i < n; i++) cout << a[i]<<" "; return 0; }
//通常用法(降序) #include<iostream> using namespace std; #include<algorithm> #include<cstdlib> bool compare(int a,int b) { return a>b;//若是改成 return a<b; 是升序 } int main() { int n; cin >> n; int a[200]; for (int i = 0; i < n; i++) { cin >> a[i]; } sort(a,a+n,compare); for (int i = 0; i < n; i++) cout << a[i]<<" "; return 0; }
整合版:ASE是升序,DESC是降序ide
enum NumComp{ASE,DESC};//枚舉出升降序變量 //建立一個類 class compare { private: NumComp com; public: //構造函數 compare(NumComp c) :com(c) {} bool operator()(int a, int b)// ()重載 { switch (com) { case ASE: return a < b; case DESC: return a > b; } } }; int main() { int n; cin >> n; int a[200]; for (int i = 0; i < n; i++) { cin >> a[i]; } sort(a, a + n,compare(DESC));//改成ASE是升序 for (int i = 0; i < n; i++) cout << a[i] << " "; return 0; }
qsort用法
qsort升降序與compare函數有關,而且compare函數必須用戶本身給出函數
#include <iostream> #include <cstdlib> using namespace std; int compare(const void *a, const void *b)//類型自定,double*,char*等 { //升序 return *(int*)a - *(int*)b; // return *(int*)b-*(int*)a;降序 } int main() { int a[10] = { 5, 6, 4, 3, 7, 0, 8, 9, 2, 1 }; qsort(a, sizeof(a) / sizeof(a[0]), sizeof(int), compare); for (int i = 0; i < 10; i++) cout << a[i] << " " << endl; return 0; }