暫時整理了直接插入排序、冒泡和希爾
不說廢話,直接上代碼!
package paiXu;
public class Jihe {
//直接插入排序
public static void insertSort(int[] array){
int len=array.length;//數(shù)據(jù)長度
if(array!=null){
for(int i=1;i<len;i++){
int temp=array[i];//存放即將要插入的數(shù)據(jù)
int j=i;
if(array[j-1]>temp){//將temp從后往前依此比較
while(j>=1&&array[j-1]>temp){//temp大于最后一個數(shù)時
array[j]=array[j-1];//
j--;
}
}
array[j]=temp;
}
}
}
//冒泡排序
public static void bubbleSort(int[] a){
int len=a.length;//數(shù)組長度
int temp;//輔助
for(int i=len-1;i>=0;i--){
for(int j=0;j<i;j++){//從前往后依次比較
if(a[j]>a[j+1]){//前一個比后一個大,就進行交換
temp=a[j+1];
a[j+1]=a[j];
a[j]=temp;
}
}
}
? ? }
//希爾排序
public static void shellSort(int[] a){
int len=a.length;//數(shù)組長度
int temp;//輔助空間
int i,j,h;
for(h=len/2;h>0;h=h/2){//h表示步長悼枢,從len/2一直變化到1
for(i=h;i<len;i++){//按步長組組數(shù),對每個組進行排序
temp=a[i];
for(j=i-h;j>=0;j=j-h){//每趟排序脾拆,根據(jù)步長將待排序列分成若干個子序列
if(temp<a[j]){
a[j+h]=a[j];
}else{
break;
}
}
a[j+h]=temp;
}
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] array={5,4,3,7,6,8,10,1};
System.out.println("原數(shù)組:");
for(int a1:array){
System.out.print(a1+" ");
}
System.out.println();
insertSort(array);
System.out.println("插入排序后:");
for(int a1:array){
System.out.print(a1+" ");
}
System.out.println();
bubbleSort(array);
System.out.println("冒泡排序后:");
for(int a1:array){
System.out.print(a1+" ");
}
System.out.println();
shellSort(array);
System.out.println("希爾排序后:");
for(int a1:array){
System.out.print(a1+" ");
}
}
}