
算法
txHe
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
[转知乎]网易云音乐的歌单推荐算法是怎样的?
转载:http://www.zhihu.com/question/26743347原因:在喜欢网易云音乐的基础上,觉得这些算法分析很有意思。一、作者:邰原朗,大型程序猿 得票数第一。这就是amazon发明的“喜欢这个商品的人,也喜欢某某”算法。其核心是数学中的“多维空间中两个向量夹角的余弦公式”,当初我的确是被这算法惊艳到了。=============2014-12-0转载 2015-02-07 22:11:39 · 5502 阅读 · 0 评论 -
[回溯法]八皇后问题的递归与非递归算法
八皇后的问题非常有名,初次理解可能稍有难度,不过多看书,看博客和代码,几遍下来,也基本清晰。首先不用想初始的情况,先假设前面已经排列好了几个皇后,即将排列下一个皇后。依次遍历八个位置,然后与之前的进行判断这个位置是否可行,如可行则进行下一个皇后,否则则移动位置继续判断。很简单。但是有两个个问题:1、不全,某个位置有八种方法排列,你只用了一种,当然你可以每个位置遍历,但太耗时,回溯法可以解决很大的一部原创 2015-12-20 14:02:45 · 3830 阅读 · 2 评论 -
[Sort]基数排序-两种实现
1、LSD-最低位优先//获取数据中最大的位数(1)a[]为存储数据的数组。(2)为数组的个数int maxbit(int a[],int num){ int d =1; int p =10; for(int i=0;i<num;i++) { while(a[i] >= p) { p*=10;原创 2015-11-29 19:11:46 · 486 阅读 · 0 评论 -
[Sort]希尔排序
详细介绍,在本博客的数据结构栏目里有,不过是java版#include<iostream>using namespace std;void Shell_Sort(int a[],int num){ int d,i,j,c; for(d = num/2;d>0;d/=2) { for(i = d;i<num;i++) {原创 2015-11-29 20:19:56 · 330 阅读 · 0 评论 -
[Sort]归并排序
#include<iostream>using namespace std;/*合并有序数组,first-mid和mid-last。num为两个数组的总长度*/void Merge_Array(int a[],int first,int mid,int last){ int num = last - first +1; int* temp = new int[num];原创 2015-11-29 21:03:36 · 351 阅读 · 0 评论 -
[Sort]堆排序
#include<iostream>using namespace std;//调整堆函数,需要三个参数,(1)存储数据的数组。(2)某个父节点。(3)num,数组的长度void Heap_Adjust(int a[],int p,int num){ int left_node = 2*p +1; //数组起始元素为0,所以2*p+1开始 int right_node = 2*p原创 2015-11-29 14:21:54 · 265 阅读 · 0 评论 -
[Sort]快速排序-递归实现
#include<iostream>using namespace std;void QuickSort(int a[],int low,int high){ if(low < high) { int pivot = a[low]; //基准 int first = low; int last = high; whil原创 2015-11-28 23:14:18 · 418 阅读 · 0 评论 -
[Sort]选择排序
#include<iostream>using namespace std;void Select_Sort(int a[],int num){ for(int i=0;i<num-1;i++) { int x = i; //要选择的点的位置 for(int j = i+1;j<num;j++) { if(a[原创 2015-11-29 10:11:30 · 356 阅读 · 0 评论 -
[Sort]插入排序-两种实现
1、直接插入排序:void insert_sort(int a[],int num){ for(int i=1;i<num;i++) { int m = a[i]; int j = i; while(a[j-1] > m && j > 0) { a[j] = a[j-1];原创 2015-11-28 23:16:31 · 389 阅读 · 0 评论 -
[算法]全排列计算
学过排列组合的应该都清楚什么是全排列。但是如何通过计算机编码显示一列数字所有的全排列呢?本文提出了两个方法。1、递归实现 比较“123”,思考它的全排列,无非就是数字之间的对换,1与2对换,1与3对换,变成“213”和“321”,第一位数字就这三种情况,第二位继续开始与后面的所有数字依次对换。递归的思想。 直接看代码,可能更清晰:bool Isduplicate(string per_str,i原创 2015-12-14 15:10:58 · 694 阅读 · 0 评论 -
[Hiho]1015-KMP算法
题目: 输入第一行一个整数N,表示测试数据组数。接下来的N*2行,每两行表示一个测试数据。在每一个测试数据中,第一行为模式串,由不超过10^4个大写字母组成,第二行为原串,由不超过10^6个大写字母组成。其中N<=20 输出对于每一个测试数据,按照它们在输入中出现的顺序输出一行Ans,表示模式串在原串中出现的次数。 Sample Input5HAHAHAHAWQNWQNADAADA原创 2015-12-12 22:09:44 · 463 阅读 · 0 评论 -
[算法]KMP算法
这个字符串匹配的算法很著名,也很难理解。研究了半天,也算看了不少博客,基本上要讲的,要理解的,各大博客大神都已详述。我把主要几篇给我很大启迪的文章列下,也给自己往后复习留下点踪迹。1、字符串匹配的KMP算法 http://kb.cnblogs.com/page/176818/ 这篇文章,看完后很快就知道KMP算法在干什么,以及我们的核心任务是什么?2、KMP算法的Next数组详解 http://w原创 2015-12-11 17:10:16 · 295 阅读 · 0 评论 -
[Sort]冒泡排序
#include<iostream>using namespace std;void Bubble_Sort(int a[],int num){ for(int i = num;i > 1;i--) { for(int j=0;j<i -1;j++) { if(a[j] > a[j+1]) {原创 2015-11-29 11:15:26 · 363 阅读 · 0 评论