数据结构和算法
会不会依然想起我a
这个作者很懒,什么都没留下…
展开
-
谷歌编码的多段线算法格式(编码折线算法)
多段线编码是一种有损压缩算法,利用这种算法,您可以将一系列坐标存储为单个字符串。点坐标使用有符号的值编码。如果仅有几个静态点,您可能还希望使用交互式多段线编码实用程序。编码过程使用熟悉的 base64 编码方案将二进制值转换成一系列 ASCII 字符的字符代码:为了确保正确显示这些字符,编码值将先与 63(ASCII 字符“?”)相加,然后再转换成 ASCII。算法也会通过检查每个字节组的最低有效...转载 2018-04-13 11:58:38 · 999 阅读 · 0 评论 -
相似图片检测:感知哈希算法之dHash的Python实现
某些情况下,我们需要检测图片之间的相似性,进行我们需要的处理:删除同一张图片、标记盗版等。如何判断是同一张图片呢?最简单的方法是使用加密哈希(例如MD5, SHA-1)判断。但是局限性非常大。例如一个txt文档,其MD5值是根据这个txt的二进制数据计算的,如果是这个txt文档的完全复制版,那他们的MD5值是完全相同的。但是,一旦改变副本的内容,哪怕只是副本的缩进格式,其MD5也会天差地别。因此加...转载 2018-06-15 19:08:49 · 683 阅读 · 0 评论 -
排序算法--选择排序
选择排序是一个比较直观的排序算法,算法复杂度是n的平方,工作原理也比较容易理解:开始是在序列中寻找最大或最小值,放在序列的起始位置,然后在找次小或者次大值放在最大或最小值之后,直至排序完毕。其实主要容易和冒泡排序混淆:最主要的区别是冒泡排序是交换相邻两个元素,来实现排序目的,而选择排序是直接遍历一次,来获取最大或者最小值来进行排序,选择排序代码如下:void select_sort(...原创 2018-09-27 01:40:27 · 163 阅读 · 0 评论 -
排序算法--冒泡排序(bubble sort)
冒泡排序是一个简单的排序算法,算法复杂度n的平方,特点是两两比较,每次遍历会将最大值或最小值放在最后,像冒泡一样,每次的最大值或最小值,逐渐冒出,故名冒泡排序;代码如下void swap( int& a,int& b){//数据交换的函数,这里另类了一点,没有定义中间变量交换值 a=a+b; b=a-b; a=a-b;}void bubble...原创 2018-09-27 02:02:12 · 288 阅读 · 0 评论 -
排序算法---简单插入排序(Simple insertion sort)
简单插入排序是由n-1趟排序组成,简单来说,就是假定一个长度为n的数组,把第0位作为起始位,并认为有序(只有一个元素嘛),然后遍历从1到n-1下标的元素,每次遍历一个进行一次排序,直到n-1趟排序完成,这个排序的算法复杂度最优的情况下,为O(n),最坏的情况下还是O(n的平方);代码如下:void InsertionSort(int a[]){ int j; int s...原创 2018-09-28 01:19:37 · 508 阅读 · 0 评论 -
排序算法----快速排序
排序算法的思路是通过一趟排序将数组分为两部分,一部分比另一部分都要小,以此递归即可得到最终的排序。复杂度nlognvoid Qsort(int a[], int low, int high)//low high代表最低的下标和最高的下标{ if(low >= high) { return; } int first = low;//将fi...原创 2018-10-24 23:58:45 · 158 阅读 · 0 评论