美文网首页
排序算法-插入排序

排序算法-插入排序

作者: 石头怪 | 来源:发表于2018-02-27 17:17 被阅读11次

插入排序

在一组数据中,将当前数据与之前已经排好序的数据从后往前进行大小比较,后将该数据插入合适的位置,直到最后完成最终排序。

代码实现

插入排序C++.png

结果

插入排序结果.png

具体过程

仍然使用Android实现整个排序过程。


插入排序动画显示.gif
  • 第一趟 :从第二个数字30开始,与之前数字42比较,发现30<42,将30插入42之前,(从实现上来说,是与42交互位置)
    -第二趟:68与42比较,再与30比较,没有变化,不交换位置
    ........
    直到最后从小到大排完。

总结

从排序上来看,如果所有的数据完全逆序,则所需要的排序次数为O(N^2);
如果说,数据已经排好,则所需要的次数为O(N);
这样看来,当数据中数据有大量重复数据,或者已经排好序的数据,插入排序的时间复杂度将不断降低。

另附java代码实现:


插入排序java实现.png

插入排序的改进方法:

减少赋值交换操作,节省更多时间。
大体思路:依次取出数据值,copy一份当前选择的数据,依次与前面已经排好序的数据进行比较,直到选到合适的位置进行交换操作。

具体实现:


插入排序改进-java.png

相关文章

网友评论

      本文标题:排序算法-插入排序

      本文链接:https://www.haomeiwen.com/subject/xvnftftx.html