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);
}
}
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);
}
}