问题描述:
给定一个源区间[x,y](y>=x)和N个无序的目标区间[x1,y1],[x2,y2],[x3,y3],......[xN,yN],判断源区间[x,y]是不是在目标区间内?
例如给定源区间[1,6]和一组无序的目标区间[2,3],[1,2],[2,9],[3,4],即可认为区间[1,6]在区间[2,3],[1,2],[2,9],[3,4]内。
解决方法:
1.首先对无序的目标区间进行从小到大的排序;
2.对排好序的区间进行合并;
3.在合并后的区间中使用二分查找来判断给定源区间是否在被合并的这些互不相交的区间中的某一个包含。
#include #include #define MAX 100
struct Line
{
int low;
int high;
};
/*实现结构体数组的排序*/
void quicksort(struct Line a[],int l,int h)
{
int i,j;
struct Line t;
i=l;
j=h;
t=a[l];
while(it.low)
j--;
if(ii+1) quicksort(a,i+1,h);
}
/*对已经按照地位排好续的区间进行合并区间*/
int hebing(struct Line a[],int n)
{
int i;
int count=0;
int lasthigh;
lasthig