java归并,快速排序

package com.agl.exea.book;

public class MegerSort {

public static void main(String[] args){

int[] a = {2,3,1,9,50,-1};
meger(a,0,a.length-1);
for(Integer i: a){

System.out.print(i+"**");
}
}

public  static void meger(int[] a,int left ,int right){

if(left==right){
return;
}

int center = (left+right)/2;
meger(a,left,center);
meger(a,center+1,right);
msort(a,left,center,right);
}

private static void msort(int[] a, int left, int center, int right) {

int size = (right-left)+1;
int[] tmp = new int[size];
int tmp_check =0;
int l = left;
int r = right;
right = center+1;
while(tmp_check < tmp.length && left<= center && right <=r){
if(a[left]>a[right]){

tmp[tmp_check] = a[left];left++;
}else{
tmp[tmp_check] = a[right]; right++;
}
tmp_check ++;
}

while(right <=r){
tmp[tmp_check] = a[right]; tmp_check ++; right++;
}
while(left <= center){
tmp[tmp_check] = a[left]; tmp_check ++;    left++;
}

System.arraycopy(tmp, 0, a, l, tmp.length);
}

}

//快速排序
package com.agl.exea.book;

public class QuicklySort {

public static void main(String[] args) {

int[] a = {2,1,3,0,9,-1,200,12,3,2};

quick(a,0,a.length-1);
for(Integer i : a){

System.out.print(i+"\t");
}
}

public static void quick(int[] a,int left, int right){

if(left >= right){

return;
}

int tmp = a[left];
int k = left;
int r = right;
left = left +1;
int mm=0;
while(left<right){

while(a[left] < tmp  &&  left<right){

left ++;
}
while(a[right] > tmp && left<right){
right --;
}

if( left<right){
mm = a[left];
a[left] = a[right];
a[right] = mm;
left++;
right--;

  }else{
 
break;
}
}

        if(left>0){
mm = a[left-1];
a[left-1] = tmp;
a[k] = mm;
        }


quick(a,k,left-1);
quick(a,left,r);


}



}

你可能感兴趣的:(java)