← 返回首页
常见排序算法之-插入排序
发表时间:2019-11-21 20:49:14
讲解常见排序算法之-插入排序

插入排序的思想就跟玩扑克一样,每一步将一个待排序的元素,按其排序码的大小,插入到前面已经排好序的一组元素的合适位置上去,直到元素全部插完为止。

1.插入排序算法图解

图解:根据其原理,我们把该无序数列看成两个部分,我们不难看出图中,首先我们把第一位3看成是有序数列,剩下的作为无序数列,因为要把后面的无序数列中的数插入到前面有序数列,所以依次把后面的数抽出,在前面找到合适位置插入。如图,先抽出44,与前面比较,比3大放在3后面,再抽出38,与前面比较,比44小,比3大,所以插入到3后面。依次类推,直到最后的一个数也插入到前面的有序数列中。

算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。

2.代码实现

int[] arr = {12, 8, 8, 34, 56, 10, 2, 77, 33};
int temp;
int j;
for(int i=1;i<arr.length;i++){
    temp = arr[i]; //把要插入的数字保存到临时变量temp中
    for(j=i-1;j>=0;j--){
    if(temp>arr[j]){
        break; //发现了要插入的位置。
    }else{
        arr[j+1]=arr[j]; //元素依次向后移动
    }
    }
    arr[j+1]=temp;
}
System.out.println("----------------排序之后----------------");

for(int i=0;i<arr.length;i++){
    System.out.print(arr[i]+ " ");
}

运行结果:
----------------排序之后----------------
2 8 8 10 12 33 34 56 77