1. 程式人生 > >貪心的基本應用sort排序

貪心的基本應用sort排序

貪心的思想主要就是區域性最優解,把問題劃分為幾個子問題,求區域性最優而得到整體最優。其要掌握的幾個主要內容,快排(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排序是區域性優先,全域性優先的優先佇列在下一篇部落格。