![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
文章平均质量分 50
脚踏实地_仰望星空
这个作者很懒,什么都没留下…
展开
-
排序算法之插入排序
插入排序算法所消耗的时间仍然是O(N^2),但是它经常被用在较复杂的排序算法的最后阶段,例如快速排序。 因为插入排序中有一个很重要的概念叫做局部有序,假设在一支队伍的中间有一个作为标记的队员,在这个作为标记的队员左边的所有队员已经是局部有序的了。这意味着这一部分人之间是按顺序排列的;每个人比他左边的人都高。然而这些队员在队列中最终的位置还没有确定,因为当没有被排过序的队员要插入到题目中间的时候,原创 2017-07-14 19:47:02 · 198 阅读 · 0 评论 -
有序数组去重复
有序数组去重复 首先在这里需要维护两个指针,一个保留当前有效元素的长度,一个从前往后扫描,进行比较,然后跳过那些重复的元素,如果值不重复的话,则保留起来。 但是在里面会遇见一个问题,就是两个不重复的值,你到底保留前者还是后者。不管你保留哪一个,最后都会失去另一个,然而这里的解决办法是:从一开始就留下第一个,然后每次比较都取后者。 public void removeDuplicate原创 2017-07-14 16:09:33 · 1718 阅读 · 0 评论 -
排序算法之选择排序
选择排序 选择排序其实是冒泡排序的升级版,将必要的交换次数从O(N^2)减少到O(N),但是它的比较次数依然是O(N^2)。 描述: 定义一个变量(temp)用于记录最小值(最大值)的下标,然后循环数组并比较,记录每次比较时所产生的较小(大)的那个值所在的下标, 下次比较时就是拿temp变量中记录的那个下标的值去比较,一轮结束后temp就会记录最小(大)的那个值的下标, 最后与"i"交换原创 2017-07-12 21:12:27 · 247 阅读 · 0 评论