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 · 500 阅读 · 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 · 206 阅读 · 0 评论 -
判断二叉排序树
前言 二叉排序树的判断,我一开始的想法是根据定义,每次判断左孩子<=根节点<=右孩子,但是写着写着发现不对,我当时的程序有一个这样致命的错误: 102 12 5 16类似于这样的树也会被判断为正确。要解决这个问题也不是不行,就是每次在判断的时候要顺带判断所有祖先节点,觉得有些麻烦。正确的...原创 2018-02-10 15:34:56 · 951 阅读 · 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 1500 unsigned int f[10][V];//全局变量,自动初始化为0 unsigned int weight[10]; unsigned转载 2017-03-22 14:12:42 · 246 阅读 · 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 · 1033 阅读 · 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 · 495 阅读 · 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 · 378 阅读 · 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 · 294 阅读 · 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 · 266 阅读 · 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 · 247 阅读 · 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 · 3460 阅读 · 1 评论 -
动态规划之最长子序列长LCS
只是代码实现,讲解和原理可以看算导的dp部分,也可以看这位的博客,讲的也比较清楚。http://blog.csdn.net/hrn1216/article/details/51534607 #include <iostream> #include <String.h> #define MAXLENGTH 1000 using namespace std; int...原创 2017-03-05 13:36:27 · 400 阅读 · 0 评论