用法1、
sort
函式可以三個引數也可以兩個引數,必須的標頭檔案
#include < algorithm>
和using namespace std;
2、它使用的排序方法是類似於快排的方法,時間複雜度為
n*log2(n) 3
、sort
函式有三個引數:(第三個引數可不寫) (
1)第乙個是要排序的陣列的起始位址。 (
2)第二個是結束的位址(最後一位要排序的位址) (
3)第三個引數是排序的方法,可以是從大到小也可是從小到大,還可以不寫第三個引數,此時預設的排序方法是從小到大排序。
兩個引數用法
#include
#include
using namespace std;
intmain()
,i;for
(i=0
;i<
20;i++)
cout
<
sort(a,a+
20);
for(i=0
;i<
20;i++)
cout
<
return0;
}上面我在網上找的比較清楚的**
三個引數用法(cmp函式)
#include
#include
using namespace std;
bool cmp(int a,int b)//
從大到小排序
intmain()
,i;for
(i=0
;i<
20;i++)
cout
<
sort(a,a+20,
cmp());
for(i=
0;i<
20;i++)
cout
<
return0;
}多重排序(這是我標的深入**)
下面是nyoj上一題三重排序 以此為例
一種排序
時間限制:
3000
ms |
記憶體限制:
65535kb
難度:3
描述
現在有很多長方形,每乙個長方形都有乙個編號,這個編號可以重複;還知道這個長方形的寬和長,編號、長、寬都是整數;現在要求按照一下方式排序(預設排序規則都是從小到大);
1.按照編號從小到大排序
2.對於編號相等的長方形,按照長方形的長排序;
3.如果編號和長都相同,按照長方形的寬排序;
4.如果編號、長、寬都相同,就只保留乙個長方形用於排序
,刪除多餘的長方形;最後排好序按照指定格式顯示所有的長方形;
輸入
第一行有乙個整數
0表示接下來有
n組測試資料;
每一組第一行有乙個整數
0,表示有
m個長方形;
接下來的
m行,每一行有三個數
,第乙個數表示長方形的編號,
第二個和第三個數值大的表示長,數值小的表示寬,相等
說明這是乙個正方形(資料約定長寬與編號都小於
10000);
輸出
順序輸出每組資料的所有符合條件的長方形的編號長
寬 樣例輸入1
8 1 1 1
1 1 1
1 1 2
1 2 1
1 2 2
2 1 1
2 1 2
2 2 1
樣例輸出
1 1 1
1 2 1
1 2 2
2 1 1
2 2 1
可以看到我們需要對結構體中的各個不同的資料按照優先順序進行排序
**是我匆忙寫的不夠規整
#include
#include
#include
using namespace std;
struct cfx a[1002];
bool cmp(cfx a,cfx b)
else return false;
}else
return false;
}int main()
else
}sort(a+1,a+1+m,cmp);
printf("%d %d %d\n",a[1].num,a[1].l,a[1].k);
for(int i=2;i<1+m;i++)
}return 0;
}在學習資料結構之後才會對sort()有比較深的理解,暫時還沒有學習過的就需要記住cmp函式等的這些步驟了。
結構體排序sort
時間限制 3000 ms 記憶體限制 65535 kb 難度 3 描述 現在有很多長方形,每乙個長方形都有乙個編號,這個編號可以重複 還知道這個長方形的寬和長,編號 長 寬都是整數 現在要求按照一下方式排序 預設排序規則都是從小到大 1.按照編號從小到大排序 2.對於編號相等的長方形,按照長方形的長...
穩定排序(sort 結構體)
穩定排序 sort 結構體 time limit 1000msmemory limit 32768kb64bit io format i64d i64u submit status description 大家都知道,快速排序是不穩定的排序方法。如果對於陣列中出現的任意a i a j i input...
結構體排序 sort()函式
只有用法示例,沒有函式詳解 該題題目為 有一種有趣的字串價值計算方式 統計字串中每種字元出現的次數,然後求所有字元次數的平方和作為字串的價值 例如 字串 abacaba 裡面包括4個 a 2個 b 1個 c 於是這個字串的價值為4 4 2 2 1 1 21 牛牛有乙個字串s,並且允許你從s中移除最多...