java几种常见排序算法
public class Arithmetic{
public static void main(String [] args){
int [] a ={7,1,3,5,4,9,8,6,2,0};
print(a);
//直接插入排序
inserSort(a);
print(a);
//冒泡排序
buddleSort( a);
print(a);
//选择排序
selectSort(a);
print(a);
//快速排序
quickSort(a,0,a.length-1);
print(a);
//希尔排序
shellSort( a);
print(a);
}
public static void print(int [] a){
for(int i=0;i<a.length;i++){
System.out.print(a[i]+" ");
}
System.out.println();
}
//直接插入排序
private static void inserSort(int [] a){
int i,j,k,temp;
for(i=1;i<a.length;i++){
temp = a[i];
j=i-1;
while(j>=0&&temp<a[j]){
a[j+1] = a[j];
j--;
}
a[j+1] = temp;
}
}
//冒泡排序
public static void buddleSort(int [] a){
int temp;
for(int i=0;i<a.length;i++){
for(int j=a.length-1;j>i;j--){
if(a[j]<a[j-1]){
temp = a[j];
a[j] = a[j-1];
a[j-1] = temp;
}
}
}
}
//快速排序
public static void quickSort(int [] a,int s, int t){
int i=s,j=t;
int temp = 0;
if(s<t){
temp=a[s];
while(i!=j){
while(j>i&&a[j]>temp)
j--;
a[i]=a[j];
while(i<j&&a[i]<temp)
i++;
a[j]=a[i];
}
a[i]=temp;
quickSort(a,s,i-1);
quickSort(a,i+1,t);
}
}
//选择排序
public static void selectSort(int [] a){
int k,temp,j;
for(int i =0;i<a.length;i++){
k=i;
for(j=i+1;j<a.length;j++){
if(a[j]<a[k]) k=j;
}
if(k!=i){
temp = a[i];
a[i] = a[k];
a[k]=temp;
}
}
}
//希尔排序
public static void shellSort(int [] a){
int i,j,k,d,temp;
d=a.length/2;
while(d>0){
for(i=d;i<a.length;i++){
j=i-d;
while(j>=0&&a[j]>a[j+d]){
temp = a[j];
a[j]= a[j+d];
a[j+d] = temp;
j=j-d;
}
d=d/2;
}
}
}
}