插入排序又分为直接插入排序和希尔排序,以下为其两种排序方式的Java实现代码
package com.method;
public class InsertMethod {
/**
* 直接插入排序
* @param arr
* @return
*/
public int[] insertSort(int arr[]){
int end=0;
int temp=0;
for(int i=0;i<arr.length-1;i++){
end=i;
temp=arr[end+1];
while(end>=0&&arr[end]>temp){
arr[end+1]=arr[end];
end--;
}
arr[end+1]=temp;
}
return arr;
}
/**
* 希尔排序
* @param arr
* @return
*/
public int[] HillSort(int arr[]){
int temp=0;
int gap=arr.length;
while(gap>1){
gap=gap/3+1;
for(int i=0;i<arr.length-gap;i++){
int index=i;
temp=arr[index+gap];
while(index>=0&&arr[index]>temp){
arr[index+gap]=arr[index];
index-=gap;
}
arr[index+gap]=temp;
}
}
return arr;
}
}
测试代码如下:
package com.test;
import com.method.InsertMethod;
public class InsertTest {
public static void main(String[] args) {
int[] arr={7,8,5,3,8,2,1,9,0};
InsertMethod m=new InsertMethod();
//int arr1[]=m.insertSort(arr);
int arr1[]=m.HillSort(arr);
for(int i=0;i<arr1.length;i++){
System.out.print(arr1[i]+"\t");
}
}
}