凸包:按横坐标排序,以最小点与最大点之间的连线为准,在直线一侧找使三角形面积最大的点,此点必在凸包内,以找到点与最大点或最小点继续递归以寻找最大三角形面积寻找凸包点,直至找不到符合条件的点。
实现代码如下:
#include<stdio.h>
#include <stdlib.h>
#include <windows.h>
#define MAX_SIZE 10001
struct Point{
int x,y;
};
// 按照x的从小到大进行排序,X相同按照Y从小到大排序
int CmpByX(const void *left, const void *right);
//处理point[first]->point[final]射线左侧的点
void DealWithLeft(int first,int final,struct Point point[MAX_SIZE],int mark[MAX_SIZE]);
int ConvexHull(void)
{
int n,i,j;
struct Point p[MAX_SIZE];
int mark[MAX_SIZE];
//double start,end;
// CPU频率
LARGE_INTEGER li;
// 记录过程时间
LONGLONG start,end,fred;
// 获取CPU频率
QueryPerformanceFrequency(&li);
fred = li.QuadPart;
freopen("input.txt", "r", stdin);
freopen("outpu