Algorithm Part I:ELEMENTARY SORTS

1.选择排序的实现

2.插入排序的实现

3.shell排序的实现

注意代码中h值的选取。

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的元素互换。

实现:

5.Convex Hull(凸包问题)

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

应用:

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

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

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

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

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

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

实现:

解决方法的具体实现:

时间: 2024-10-06 17:49:43

Algorithm Part I:ELEMENTARY SORTS的相关文章

algorithm之排序算法--待解决

简述:排序算法,参见http://www.cplusplus.com/reference/algorithm/?kw=algorithm 待解决问题:各种排序算法的实现 /* template <class RandomAccessIterator> void sort (RandomAccessIterator first, RandomAccessIterator last); template <class RandomAccessIterator, class Compare&g

HTTP认证模式:Basic & Digest

一. Basic 认证 客户端以" : "连接用户名和密码后,再经BASE64加密通过Authorization请求头发送该密文至服务端进行验证,每次请求都需要重复发送该密文.可见Basic认证过程简单,安全性也低,存在泄露个人账号信息以及其他诸多安全问题.以下仅为原理演示,不代表真实情况: 客户端向服务器请求数据: GET / HTTP/1.1Host: www.myrealm.com 服务端向客户端发送验证请求401: HTTP/1.1 401 UnauthorisedServer

Latex使用:在latex中添加算法模块

在Miktex下有三个latex algorithm包,分别为:algorithm,algorithmic,algorithm2e三个,其中algorithm,algorithmic经常成套使用: latex中algorithm模板为: latex文件中顶端加入的package: \usepackage{algorithm} \usepackage{algorithmic} \usepackage{setspace} 算法块代码: \begin{algorithm}[htb] \setstret

算法:动态规划

1.首先来看看维基百科怎么定义的动态规划 引自wiki:Dynamic programming In mathematics, management science, economics, computer science, and bioinformatics, dynamic programming (also known as dynamic optimization) is a method for solving a complex problem by breaking it dow

2016:如何选择 Linux 发行版

不管是在企业级应用还是在消费者领域,2015 对于 Linux 来说都是极其重要的一年.作为一个从 2005 年就开始使用 Linux 的老用户,我有幸见证了 Linux 过去这 10 年里的重大发展,并且,我相信它在 2016 年里会更加令人激动.在这篇文章里,我会挑选几个将在 2016 年里大放光彩的最佳发行版给大家介绍一下. 强势归来的发行版:openSUSE SUSE 是 openSUSE 发行版背后的公司,同时也是起步最早的 Linux 公司:它在 Linus Torvalds 发布

WEB认证模式:Basic &amp; Digest

一. HTTP Basic 客户端以" : "连接用户名和密码后,再经BASE64加密通过Authorization请求头发送该密文至服务端进行验证,每次请求都需要重复发送该密文.可见Basic认证过程简单,安全性也低,存在泄露个人账号信息以及其他诸多安全问题.以下仅为原理演示,不代表真实情况: 客户端向服务器请求数据: GET / HTTP/1.1Host: www.myrealm.com 服务端向客户端发送验证请求401: HTTP/1.1 401 UnauthorisedServ

算法基础:排序与查找

1.直接插入排序 1.1.基本思想: 在要排序的一组数中,假设前面(n-1) [n>=2] 个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的:如此反复循环,直到全部排好顺序. 1.2.实现思路: INSERTION_SORT(A) for i = 2 to n j = i-1 key = A[i] while j > 0 && A[j] > key A[j+1] = A[j] j-- A[j+1] = key 1.3.算法实现: pub

机器学习-斯坦福:学习笔记3-欠拟合与过拟合概念

欠拟合与过拟合概念 本次课程大纲: 1.  局部加权回归:线性回归的变化版本 2.  概率解释:另一种可能的对于线性回归的解释 3.  Logistic回归:基于2的一个分类算法 4.  感知器算法:对于3的延伸,简要讲 复习:  –第i个训练样本 令,以参数向量为条件,对于输入x,输出为: n为特征数量 定义成本函数J,定义为: m为训练样本 通过正规方程组推导的结论: 1. 过拟合与欠拟合 通常,你选择交给学习算法处理的特征的方式对算法的工作过程有很大影响. 例:上次课的例子中,用x1表示房

Grab Cut学习理解之(1)new min-cut /max-flow algorithm

参(chao)考(xi)的资料还是很多的,好好学习,天天向上嘛- 1.swsamleo大神:http://blog.csdn.net/swsamleo/article/details/7915316 2.wstcegg大神:http://blog.csdn.net/wstcegg/article/details/39495535 3.zouxy09大神图像分割系列:http://blog.csdn.net/zouxy09/article/details/8532106 4.GraphCuts o