摘要:
算法思想:分治法,把一个序列分成两个,其中一边的元素小于另一边的元素。一直这样分下去,直到只有一个元素的时候返回。然后回推往前看,所有的元素已经按大小归位。算法的难点在于将一个序列分成两列的过程,使得一边元素小于另一边,下面给予说明。设数组array对下标 leftIndex到rightIndex之... 阅读全文
摘要:
插入排序的思想是:1。假设第一个元素是有序的,理解这个有序是针对只有这一个元素。2。然后依次拿出后面元素插入到前面元素构成的有序序列里面(这个过程保证了算法的稳定性,因为遇到等于小于自己的时候就停止插入操作)。3。直到最后一个元素插入到插入到前面的有序序列,完毕。时间复杂度分析:假设数组有n个元素最... 阅读全文
摘要:
算法思想:排序数组内元素由小到大:1.每一趟从序列中选出最大的元素,然后与末尾的元素对调(决定了此排序是不稳定的,因为有可能把原位置元素调换到与和它等值的元素前面)。2.重复1的动作,把上一部调换到末尾的元素排除在外。3.当只剩下第一个元素时,排序完毕。时间复杂度:设共有n个元素最好情况,原来数组元... 阅读全文
摘要:
冒泡排序是基于比较的排序中比较基本的算法。以升序排序目的为例,算法的中心思想是从头至尾的比较两两相邻的元素,如果发现有反序(决定了稳定性)的则交换两个相邻元素。完成第一趟比较后最大的元素放到了最末端。第二趟从头至尾的比较不用比较最后一个元素(最大元素已经在最末端正确位置),所以比第一次少比较了一个元... 阅读全文
摘要:
前面写过一篇关于轮廓算法的文章,是把合并建筑和合并轮廓是分开对待的,并且为了使轮廓合并的时候算法简单,对x坐标使用了double类型,然后对整形的x坐标数据进行合并。这样做是为了使得需找拐点的算法容易理解,遇到拐点的时候方便辨认。但是缺点也很明显:它对所有建筑的x坐标区间(MaxX-MinX)非常敏... 阅读全文