标题:Java排序算法之直接插入排序
一、原理
从第二个元素一直到最后一个元素,依次和前面的子序列进行比较,
若j>0 && a[j]<a[j-1]
此元素小于它的前一个元素,则进行交换,重复上述步骤,直到此元素>=它的前一个元素。
核心代码如下:
for(int i=1;i<a.length;i++) {
int j=i;
while(j>0 && a[j]<a[j-1]) {
int temp=a[j];
a[j]=a[j-1];
a[j-1]=temp;
j--;
}
}
完整代码如下:
/**
* 测试直接插入排序
* @author dell
*
*/
public class TestDirectInsertSort {
public int[] directInsertSort(int[] a) {
for(int i=1;i<a.length;i++) {
int j=i;
while(j>0 && a[j]<a[j-1]) {
int temp=a[j];
a[j]=a[j-1];
a[j-1]=temp;
j--;
}
}
return a;
}
@Test
public void test() {
// int[] a=new int[] {32,15,6,48,19,21,2};
int[] a=new int[] {43,12,35,18,26,57,7,21,43,46};
a=this.directInsertSort(a);
for(int in:a) {
System.out.print(in+" ");
}
}
}