文章
11
粉丝
406
获赞
14
访问
88.1k
- #include<iostream>
- #include<cstdio>
- #include<cstdlib>
- using namespace std;
-
- void merge(int *array,int l,int mi,int r){
- int *tmp=new int[mi-l];
- for(int i=0;i<mi-l;i++){
- tmp[i]=array[l+i];
- }
- int i=0,j=mi,k=l;
- while((l+i<mi)&&(j<r)){
- array[k++]=(array[j]<tmp[i])?array[j++]:tmp[i++];
- }
- while(l+i<mi){
- array[k++]=tmp[i++];
- }
-
- delete []tmp;
- }
-
- void mergesort(int *array,int l,int r){
- if(r-l<2)return;
- int mi=(l+r)>>1;
- mergesort(array,l,mi);
- mergesort(array,mi,r);
- merge(array,l,mi,r);
- }
-
- int deduplicate(int* array,bool* flag,int l, int r){
- if(r-l<2)return(r-l==1)?1:0;
- int last_ele=array[l],rear=l;
- for(int i=l+1;i<r;i++){
- if(array[i]!=last_ele){
- rear++;
- last_ele=array[i];
- if(rear<i)array[rear]=array[i];
- }
- else{
- flag[rear]= true;
- ...
登录后发布评论
暂无评论,来抢沙发