您的位置:首页 > 其它

排序算法

2015-07-25 14:32 561 查看
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]);
}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: