标签:style blog http color os ar java sp div
快速排序(数组a从小到大,参数1是待排序的数组,参数2是起始下标,参数3是终止下标):
1 static void sort(int [] a, int l,int r){ 2 int m = l+r>>1; 3 int i=l, j = r; 4 do{ 5 while( a[i]<a[m] ) i++; 6 while( a[j]>a[m] ) j--; 7 if( i<=j ){ 8 int t = a[i]; 9 a[i] = a[j]; 10 a[j] = t; 11 i++; j--; 12 } 13 }while( i<j ); 14 if( l<j ) sort(a,l,j); 15 if( r>i ) sort(a,i,r); 16 }
Unique函数(类似C++的unique,返回值是最后一个的数的下标,参数1是待排序的数组,参数2是起始下标,参数3是终止下标)
1 static int unique(int [] a, int l,int r){ 2 int i = l; 3 int j = i+1; 4 while( j<=r ){ 5 while( j<=r&&a[j]<=a[i] ) j++; 6 if( i+1<=r&&j<=r ){ 7 a[i+1] = a[j]; 8 i++; 9 j++; 10 } 11 } 12 13 return i; 14 }
lower_bound二分查找(类似C++的lower_bound,参数1是待查找数组,参数2是起始下标,参数3是终止下标,参数4是找的数,返回第一个>=x的位置)
1 static int lower_bound(int [] a,int l,int r,int x){ 2 r++;l--; 3 while( r-l>1 ){ 4 int m = l+r>>1; 5 if( a[m]<x ) l = m; 6 else r = m; 7 } 8 return r; 9 }
upper_bound二分查找(用法同上,返回值为第一个>x的位置)
1 static int upper_bound(int [] a,int l,int r,int x){ 2 r++; l--; 3 while( r-l>1 ){ 4 int m = l+r>>1; 5 if( a[m]<=x ) l = m; 6 else r = m; 7 } 8 return r; 9 }
标签:style blog http color os ar java sp div
原文地址:http://www.cnblogs.com/llkpersonal/p/4056245.html