
c
aNoobCoder
这个作者很懒,什么都没留下…
展开
-
C语言中的通用编程
一个简单的快排,随机化,尾递归的好像都没做,很久以前写的了,最近学Python的functional program又翻了出来,#include<stdio.h>#include<stdlib.h>#include<string.h>#include<assert.h>void swap(void *vp1, void *vp2,int size){ char *cp = (char原创 2017-02-11 08:56:29 · 514 阅读 · 0 评论 -
查询链表的倒数第k个位置及其变形
思路 这个也比较简单,和判断链表是否有环的思路类似,声明两个指针p1、p2指向链表首, 想让p2走k步,然后p1和p2一起走,直到p2到达链表尾部。//查找链表倒数第k个元素LinkNode *getLastK(LinkNode *head, int k){ int counter = k; LinkNode *p1 = head, *p2 = head; whi...原创 2018-02-10 16:11:23 · 220 阅读 · 0 评论 -
判断二叉排序树
前言 二叉排序树的判断,我一开始的想法是根据定义,每次判断左孩子<=根节点<=右孩子,但是写着写着发现不对,我当时的程序有一个这样致命的错误: 102 12 5 16类似于这样的树也会被判断为正确。要解决这个问题也不是不行,就是每次在判断的时候要顺带判断所有祖先节点,觉得有些麻烦。正确的...原创 2018-02-10 15:34:56 · 965 阅读 · 0 评论 -
01背包问题
经典的动归问题 01背包的状态转换方程 f[i,j] = Max{ f[i-1,j-Wi]+Pi( j >= Wi ), f[i-1,j] }#include<iostream>using namespace std;#define V 1500unsigned int f[10][V];//全局变量,自动初始化为0 unsigned int weight[10];unsigned转载 2017-03-22 14:12:42 · 259 阅读 · 0 评论 -
算法导论之最坏情况下为O(n)的选择算法
当n比较小时,隐含的常数较大#include<iostream>#include<algorithm> using namespace std;int PARTITION(int a[], int l ,int r,int k)//k为分界值下标 { swap(a[r],a[k]); //把分界值交换到右边 int left = l,right = r,pivot = a[原创 2017-03-05 13:55:04 · 1056 阅读 · 0 评论 -
分治法之线性选择第i小元素
#include<iostream>using namespace std;void swap(int& a,int& b) { if(a!=b) { a^=b; b^=a; a^=b; } }int PARTITION(int a[], int p ,int r){ int原创 2017-03-05 13:52:30 · 510 阅读 · 0 评论 -
排序之快排qsort
#include<stdio.h>#include<stdlib.h>#include<time.h>/*rand产生的随机数从0~rand_max(32767) 产生从x~y的随机数k=rand()%(y-x+1)+x *///k=rand()%(right-left+1)+left; void swap(int& a,int& b) { if(a!=b)原创 2017-03-05 13:42:46 · 398 阅读 · 0 评论 -
排序之归并排序
#include<iostream> using namespace std;void Merge(int a[], int left, int center, int right) { int *t = new int[right-left+1];//存放被排序的元素 int i = left; int j = center + 1;原创 2017-03-05 13:41:27 · 309 阅读 · 0 评论 -
堆排序heapsort
#include<stdio.h>void swap(int& a,int& b) { if(a!=b) { a^=b; b^=a; a^=b; } }void MAX_HEAPIFY(int a[],int length,int i)//a数组第一个存值 { int large=i原创 2017-03-05 13:39:56 · 274 阅读 · 0 评论 -
动态规划之矩阵链乘法
#include <iostream> #include <stdio.h>#include <assert.h>#include <stdlib.h>#include <String.h>#define MAX 100typedef struct Matrix{ int left; int right;}Matrix;using namespace std;//自底向上的原创 2017-03-05 10:39:45 · 261 阅读 · 0 评论 -
分治法之求最大连续子序列和
对原问题有如下解 1.最大子序列在数组中点的左边 2.最大子序列在数组中点的右边 3.最大子序列跨越数组中点#include<iostream>using namespace std;int FIND_MAX_CROSSING_SUBARRAY(int a[],int low,int high){ int mid = (low+high)/2; int i = mid;原创 2017-03-05 11:52:57 · 3492 阅读 · 1 评论 -
动态规划之最长子序列长LCS
只是代码实现,讲解和原理可以看算导的dp部分,也可以看这位的博客,讲的也比较清楚。http://blog.youkuaiyun.com/hrn1216/article/details/51534607#include <iostream>#include <String.h>#define MAXLENGTH 1000using namespace std;int...原创 2017-03-05 13:36:27 · 411 阅读 · 0 评论