一些簡單排序的使用方法
阿新 • • 發佈:2022-04-11
1.sort函式的簡單使用
例如有一個a陣列a[n],如果要對a陣列中的元素進行排序(sort函式預設升序排列)
sort(a,a+n)即可;
用一個例子看一下具體的用法:
給定一個長度為 N的陣列 a,請你先從小到大輸出它的每個元素,再從大到小輸出它的每個元素。
輸入描述
第一行包含一個整數 N。
第二行包含 N 個整數 a1,a2,a3,....表示陣列 A的元素。
輸出描述
輸出共兩行,每行包含 N個整數,表示答案。
輸入輸出樣例
示例 1
輸入
5
1 3 2 6 5
輸出
1 2 3 5 6
6 5 3 2 1
補充:給動態陣列排序
例如vector<int>a;
給a排序就是sort(a.begin,a.end)
程式碼如下:
#include <iostream> #include <cmath> #include <algorithm>//sort函式的標頭檔案 using namespace std; bool cmp(int a,int b) //如果a<b,表示升序排列,如果a>b,表示降序排列 { return a>b;//還有一種擴充套件是對結構體中的成員進行排序 } int main() { int a[1000000]; int n; cin>>n;for (int i=0;i<n;i++) { cin>>a[i]; } sort(a,a+n);//先對它進行升序排列 for(int i = 0; i < n; i++) { cout<<a[i]<<" "; } cout<<endl; sort(a,a+n,cmp); for(int i=0; i<n; i++) { cout<<a[i]<<" "; } return0; } 點選並拖拽以移動
2.桶排序
首先,用處就是對含有相同元素的陣列進行排序(題目一般會要求需要將相同的元素都輸出來)。
原理: 在主函式外開一個數組,初始化為零,利用該陣列的下標對應要排序的元素的大小,用該陣列中的元素的大小對應相同元素的個數。
根據這個原理,可以設定一個數組,用來記錄某些東西出現的個數,同時,它還有點像對映;
使用桶排序需要滿足的條件:
1.需要知道進行排列的數的範圍
2.資料的跨度不大(當跨度很大時效率有點低)
例題:
將 1,5,5,2,8,8,10 這七個數按照從大到小輸出來
#include<iostream> using namespace std; int a[100]; int main() { int n; cin>>n; int max=100;//題目中資料的最大值,因為它是使用下標來表示資料的範圍 for(int i=0;i<n;i++)//輸入7個數 { int t; cin>>t; a[t]++; } for(int i=0;i<max;i++) { for(int j=0;j<a[i];j++)//如果這個桶中的個數為零,直接跳過,不輸出了 { cout<<i<<' '; } } return 0; } /* 7 1 5 5 2 8 8 10 */