因为下个月就考试了,没空
[……]
何锐的个人博客
最近在做算法复健,鉴于我的blog域名难产,暂时寄居在何dalao这里。
这里是百度百科。有N男N女,均为异性恋,每个人都对异性有好感度排序。如何将他们两两配对,才能尽可能使结果令每个人都满意。
当然也有N男M女、多对一的情况,这里先不讨论(网上有些大牛写了论文)。
被广泛认可的算法是由美国数学家 David Gale 和 Lloyd Shapley 于1962年发明的 Gale-Shapley算法,简称GS算法。GS算法的思路如下:
先给N男N女从0~N-1分别编号,然后要求每个人写出他们对异性的好感度排序。为了方便,这里N取4.比如0号男最喜欢3号女,[……]
最近在做算法复健,鉴于我的blog域名难产,暂时寄居在何dalao这里。
二分查找又名折半查找。在一个有序数列中查找某个特定数/对象时,可以根据数的大小关系,每次将查找范围缩小到原来的一半,从而将查找所需的时间从O(n)缩小为O(logn).
举例:我需要在[1,4,5,7,12,15,19,27,33,41,49]这11个数中查找27.
如果正常按顺序检索,需要检索8次,当数据范围扩大到n时,时间复杂度为O(n).
如果采用二分查找,查找顺序如下:
最近在做算法复健,鉴于我的blog域名难产,暂时寄居在何dalao这里。
时间复杂性,又称时间复杂度,它定性描述该算法的运行时间,这、是一个代表算法输入值的字符串的长度的函数。时间复杂度常用O表述,不包括这个函数的低阶项和首项系数。
上文摘自百度百科。
简单来说,时间复杂度是:程序每运行一次需要进行运算的次数。这里的“运算”一般指一个语句,也就是写代码时的一行代码。
当这个次数为较小的常数(计算机1秒大约能进行10^8
次运算,如果远小于这个数,可以视为常数)时,一般表示为O(1)。
当这个次数中含有未知数(即,计算次数与输入的某个值有关)时,一般用n表示未知数,只保留次数最高的项,[……]