首页 > 代码库 > [模板总结] Java的一些模板
[模板总结] Java的一些模板
快速排序(数组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 }
[模板总结] Java的一些模板
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。