1. 程式人生 > 其它 >一些簡單排序的使用方法

一些簡單排序的使用方法

 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]<<" "; } return
0; } 點選並拖拽以移動

 

 

 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
 */