You are on page 1of 2

1.

排序

bool cmp(LINE x,LINE y){


return x.l<y.l;
}
sort(line+1,line+n+1,cmp);

从小到大
void Sort(int*a,int n){
if(n<=1) return;
int t=a[n-1],l=0,r=n-2;
do{
for(;r>=l;l++)
if(a[l]>t) break;
for(;r>=l;r--)
if(a[r]<t) break;
if(r>=l) swap(a[l],a[r]);}while(r>=l);
swap(a[l],a[n-1]);
Sort(a,l);
Sort(a+l+1,n-l-1);
}

从小到大
void merge_sort(LINE*p,int n){
if (n <= 1) return;
int l = n / 2, r = n - n / 2;
merge_sort(p, l);
merge_sort(p + l, r);
LINE * pn = new LINE[n];
int i = 0, j = l, k = 0;
while (i < l && j < n) {
if (p[i].l > p[j].l) pn[k++] = p[j++];
else pn[k++] = p[i++];
}
for (; i < l; i++) pn[k++] = p[i];
for (; j < n; j++) pn[k++] = p[j];
for (int i = 0; i < n; i++) p[i] = pn[i];
delete [] pn;
}

Sort(a,n);(左闭右开)
2. 二分搜索左闭右开比较方便

realNumber realMake(int x) {
int p = (int)log10(x);
return (realNumber){x, p};
}

You might also like