貪心的基本應用sort排序
阿新 • • 發佈:2018-12-09
貪心的思想主要就是區域性最優解,把問題劃分為幾個子問題,求區域性最優而得到整體最優。其要掌握的幾個主要內容,快排(sort排序),優先佇列(queue),區間完全覆蓋問題,最大不相交覆蓋問題,區間選點問題
快排和佇列是實現快速排序的手段,而覆蓋問題是貪心的常見問題。
sort排序:
sort排序分為升序和降序,sort排序預設的是升序(從小到大排列),sort在#include<algorithm>標頭檔案裡,屬於C++,注意不要忘記加上using namespace std;
舉例:如果我們輸入五個數7,9,3,2,1要求從小到大輸出
程式碼如下:
#include<algorithm> #include<cstdio> using namespace std; int main() { int a[5],i; for(i=0;i<5;i++) { scanf("%d",&a[i]); } sort(a,a+5); for(i=0;i<5;i++) { printf("%d",a[i]); } return 0; }
如果我們要求從大到小輸出,程式碼如下:
#include<algorithm>
#include<cstdio>
using namespace std;
int cmp(int a,int b)
{
return a>b;
}
int main()
{
int a[5],i;
for(i=0;i<5;i++)
{
scanf("%d",&a[i]);
}
sort(a,a+5,cmp);
for(i=0;i<5;i++)
{
printf("%d",a[i]);
}
return 0;
}
變動很小吧。掌握sort快排之後工作效率會大幅度提高,sort排序是區域性優先,全域性優先的優先佇列在下一篇部落格。