标签:length oid 排序算法 实现 归并 r++ java实现 for ==
public void selectSort(int a[]){
for(int i=0;i<a.length;i++){
int min=i;
for(int j=i;j<a.length;j++){
if(a[min]>a[j]) min=j;
}
int temp=a[i];
a[i]=a[min];
a[min]=temp;
}
}
public void insertSort(int[] a){
for(int i=1;i<a.length;i++){
int j=i,cur=a[i];
while(j>0&&cur<a[j-1]){
a[j]=a[j-1];
j--;
}
a[j]=cur;
}
}
public int[] mergeSort(int a[]){
int l=0,r=a.length-1,m=(l+r)/2;
if(l==r) return a;
int[] sub1=Arrays.copyOfRange(a,l,m+1);
int[] sub2=Arrays.copyOfRange(a,m+1,r+1);
sub1=mergeSort(sub1);
sub2=mergeSort(sub2);
a=merge(sub1,sub2);
return a;
}
public int[] merge(int[] a,int[] b){
int[] res=new int[a.length+b.length];
int i=0,j=0,r=0;
while(i<a.length&&j<b.length){
if(a[i]<b[j])
res[r++]=a[i++];
else
res[r++]=b[j++];
}
while(i<a.length) res[r++]=a[i++];
while(j<b.length) res[r++]=b[j++];
return res;
}
public void quickSort(int[] a,int l,int r){
if(l>=r) return;
int mid=move(a,l,r);
quickSort(a,l,mid-1);
quickSort(a,mid+1,r);
}
public int move(int[] a,int l,int r){
int base=a[l],left=l;
while(l!=r){
while(l<r&&base<=a[r]) r--;
while(l<r&&base>=a[l]) l++;
if(l<r){
int tmp=a[l];
a[l]=a[r];
a[r]=tmp;
}
}
a[left]=a[l];
a[l]=base;
return l;
}
标签:length oid 排序算法 实现 归并 r++ java实现 for ==
原文地址:https://www.cnblogs.com/MuiseSim/p/14448812.html