排序算法

来源:互联网 发布:巨人网络收购alpha 编辑:程序博客网 时间:2024/06/15 18:08
package test;


public class Test1 {
  public static void main(String []args){ 
 
 int a[]={44,8,99,6,111,2,55,6,0,55,33,189,456,1,0};

//  sort(a);

//  sort2(a);
 
//  sort3(a);
  
sort4(a,0,a.length-1);
 for(int i=0;i<a.length;i++){ 
 System.out.println(a[i]);
 }
  }
  
  //选择排序
private static void sort4(int[] a, int i, int j) {

 if(j<=i) return;
  int m=parttion(a,i,j);
  sort4(a,i,m-1);
  sort4(a,m+1,j);
  
}

}


private static int parttion(int[] a, int lo, int hi) {
   int i=lo,j=hi+1;
  int t=a[lo];
   while(true){ 
 while(a[++i]<t) if(i==hi) break;
 while(t<a[--j]) if(j==lo) break;
 if(i>=j) break;
  int h=a[i];
  a[i]=a[j];
  a[j]=h;
   }
   int h=a[lo];
   a[lo]=a[j];
   a[j]=h;

return j;
}
//插入排序
private static void sort3(int[] a) {
int N=a.length;
for(int i=1;i<N;i++){ 
for(int j=i;j>0&&a[j]<a[j-1];j--){ 
int t=a[j];
a[j]=a[j-1];
a[j-1]=t;

}
}
ForTest(N,a);
}
// 冒泡排序
private static void sort2(int[] a) {
   int N=a.length;
   for(int i=0;i<N;i++){ 
  for(int j=0;j<N-i-1;j++){ 
  if(a[j]>a[j+1]){ 
  int t=a[j];
  a[j]=a[j+1];
  a[j+1]=t;
  
  }
  
  }
   }
   for(int i=0;i<N;i++){ 
System.out.println(a[i]);
}
}
// 选择排序
private static void sort(int[] a) {
// TODO Auto-generated method stub
int N=a.length;
for(int i=0;i<N;i++){ 
int min=i;
for(int j=i+1;j<N;j++){ 
if(a[j]<a[min]){ 
min=j;
}
int t=a[i];
a[i]=a[min];
a[min]=t;
}
}
for(int i=0;i<N;i++){ 
System.out.println(a[i]);
}
}


public static void ForTest(int N,int a[]){ 
for(int i=0;i<N;i++){ 
System.out.println(a[i]);
}
}
}
0 0