C++的sort()函數的用法詳解

2020-08-12 16:03:05
  1. 爲什麼要用c++標準庫裡的排序函數
           sort()函數是c++一種排序方法之一,學會了這種方法也打消我學習c++以來使用的氣泡排序和選擇排序所帶來的執行效率不高的問題!因爲它使用的排序方法是類似於快排的方法,時間複雜度爲n*log2(n),執行效率較高!
  2. c++標準庫裡的排序函數的使用方法
           sort函數包含在標頭檔案爲#include<algorithm>的c++標準庫中,呼叫標準庫裡的排序方法可以不必知道其內部是如何實現的,只要出現我們想要的結果即可! c
           sort函數有三個參數: (1)第一個是要排序的陣列的起始地址。 (2)第二個是結束的地址+1(最後一位要排序的地址+1) (3)第三個參數是排序的方法,可以是從大到小也可是從小到大,還可以不寫第三個參數,此時預設的排序方法是從小到大排序。
           sort函數使用模板: sort(start,end+1,排序方法),從小到大排序sort(a,a+d),從大到小排序sort(a,a+d,cmp),d等於要排序的元素的個數。cmp函數背下。
    bool cmp(int a,int b){return a>b;}

    下面 下麪是具體使用sort()函數排序的題目。

題目鏈接 

整數奇偶數排序

描述

給定10個整數的序列,要求對其重新排序。排序要求:1.奇數在前,偶數在後;2.奇數按從大到小排序;3.偶數按從小到大排序。

輸入

輸入一行,包含10個整數,彼此以一個空格分開,每個整數的範圍是大於等於0,小於等於100。

輸出

按照要求排序後輸出一行,包含排序後的10個整數,數與數之間以一個空格分開。

輸入樣例 1 

4 7 3 13 11 12 0 47 34 98

輸出樣例 1

47 13 11 7 3 0 4 12 34 98

#include<bits/stdc++.h>
using namespace std;
bool cmp(int a,int b){return a>b;}
int main(){
	int i,a[10],b[5],c[5],j=0,k=0;
	for(i=0;i<10;i++)cin>>a[i];
	for(i=0;i<10;i++){
		if(a[i]%2==1){
			b[j++]=a[i];
			sort(b,b+j,cmp);
		}
		else{
			c[k++]=a[i];
			sort(c,c+k);
		}
	}
	for(i=0;i<j;i++)cout<<b[i]<<" ";
	for(i=0;i<k;i++)cout<<c[i]<<" ";
	return 0;
}