排序算法第二篇——折半插入排序

算法描述:

在上一篇插入排序算法中,已经提到,插入排序的核心是在有序的集合中找到要插入的位置。所以,在这里介绍一种对插入排序的改进算法,即折半插入排序。折半插入排序是指利用折半查找的算法,在有序集合中找到要插入的位置。

Java代码:


运行结果:

排序前:
719 660 723 463 586 925 971 922 544 890
第1次排序:
660 719 723 463 586 925 971 922 544 890
第2次排序:
660 719 723 463 586 925 971 922 544 890
第3次排序:
463 660 719 723 586 925 971 922 544 890
第4次排序:
463 586 660 719 723 925 971 922 544 890
第5次排序:
463 586 660 719 723 925 971 922 544 890
第6次排序:
463 586 660 719 723 925 971 922 544 890
第7次排序:
463 586 660 719 723 922 925 971 544 890
第8次排序:
463 544 586 660 719 723 922 925 971 890
第9次排序:
463 544 586 660 719 723 890 922 925 971
时间复杂度分析:由于二分查找的时间复杂度为O(log2n),所以折半插入排序算法的复杂度为O(nlog2n)。

稳定性分析:有排序算法稳定性概念可知,折半插入排序算法是稳定的。

posted @ 2012-04-11 22:40  Java EE  阅读(269)  评论(0编辑  收藏  举报