首页 > 其他 > 详细

Algorithm Part I:ELEMENTARY SORTS

时间:2014-09-22 13:39:33      阅读:319      评论:0      收藏:0      [点我收藏+]

1.选择排序的实现

bubuko.com,布布扣


2.插入排序的实现

bubuko.com,布布扣


3.shell排序的实现

    注意代码中h值的选取。

bubuko.com,布布扣


4.shuffling(随机算法)

问题描述:给定一组元素个数为N数组i,随机的重新安排每个元素的位置,要求每个元素出现在各个位置上的概率相等。

解(1):

思路:声明一个长度为N的double类型的数组j,生成N个随机变量依次赋给j中的元素。i数组与j数组中的值一一对应。对j数组进行排序,当j中元素的位置发生改变时,i中元素相应的位置也跟着改变。当数组j排序完成时,数组i的新顺序也就得到了。

解(2):

思路:依次遍历数组i中的各元素。当遍历到index为n的元素时,生成一个0-n的随机数x,然后将index为n的元素与index为x的元素互换。

实现:

bubuko.com,布布扣


5.Convex Hull(凸包问题)

问题描述:平面中有N个点,在这N个点中找出若干个点构成一个多边形,使得所有的点都包含在这个多边形中。

应用:

(1)两点中间存在障碍物阻挡,找两点中的最短路径。

bubuko.com,布布扣

(2)在平面上给定N个点,找出相距最远的两点。

bubuko.com,布布扣

首先要认识到两个事实:(1)N个点的凸包一定能按照逆时针的方向将所有在凸包上的点遍历一边。(2)设N个点中纵坐标值最小的点为A。则从A出发逆时针遍历凸包时,凸包上的点与A的连线与X轴所成的角度将慢慢变大。

bubuko.com,布布扣


得到解答所要解决的问题:

如何判断X->Y->Z是否为逆时针?

通过求下列矩阵的值,我们可以很轻松的进行判断。

bubuko.com,布布扣

实现:

bubuko.com,布布扣

解决方法的具体实现:

bubuko.com,布布扣

Algorithm Part I:ELEMENTARY SORTS

原文:http://blog.csdn.net/yao_wust/article/details/39457303

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!