算法
文章平均质量分 75
心潇瑶
这个作者很懒,什么都没留下…
展开
-
插入排序&归并排序
#include#define N 6int A[N];void Init()//初始化数组{ int a; printf("输入%d个数进行归并排序:",N); for(a=0;ak) //错误点 插入排序前面的元素是有序的{A[i+1]=A[i];i--;}A[i+1]=k;}}void OutPut(int A[],int n){for(int i=0;i<n;i++)printf("%原创 2013-07-08 17:13:22 · 1016 阅读 · 0 评论 -
快速排序
快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。该方法的基本思想是:1.先从数列中取出一个数作为基准数。2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。3.再对左右区间重复第二步,直到各区间只有一个数。虽然快速排序称为分治法,但分治原创 2013-07-10 18:09:40 · 1232 阅读 · 1 评论 -
进程监控
#ifndef MS_MONITOR_H_ 1 #define MS_MONITOR_H_ 2 3 #include 4 #include 5 #include 6 #include 7 #includ原创 2014-08-06 18:17:46 · 1253 阅读 · 1 评论 -
微软面试:k-th string
问题:Consider a string set that each of them consists of {0, 1} only. All strings in the set have the same number of 0s and 1s. Write a program to find and output the K-th string according to the di原创 2014-04-18 12:06:14 · 1371 阅读 · 0 评论 -
ACM之字符串处理
一:问题描述企业喜欢用容易被记住的电话号码。让电话号码容易被记住的一个办法是将它写成一个容易记住的单词或者短语。例如,你需要给Waterloo 大学打电话时,可以拨打TUT-GLOP。有时,只将电话号码中部分数字拼写成单词。当你晚上回到酒店,可以通过拨打310-GINO来向Gino's 订一份pizza。让电话号码容易被记住的另一个办法是以一种好记的方式对号码的数字进行分组。通过拨打Pizza原创 2014-02-19 20:36:23 · 2124 阅读 · 0 评论 -
ACM算法相关资料
一:知识点数据结构:1,单,双链表及循环链表2,树的表示与存储,二叉树(概念,遍历)二叉树的应用(二叉排序树,判定树,博弈树,解答树等)3,文件操作(从文本文件中读入数据并输出到文本文件中)4,图(基本概念,存储结构,图的运算)数学知识1,离散数学知识的应用(如排列组合、简单的图论,数理逻辑)2,数论知识3,线性代数4,组合代数5,计算几何二原创 2013-08-02 17:18:24 · 1765 阅读 · 3 评论 -
栈的基本操作
源于一道面试题:定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。要求函数min、push以及pop的时间复杂度都是O(1)。总结学习了栈的基本操作。代码如下:#include#include#include#define SIZE 5typedef struct SqStack{ int *top; int *base; int stackSize原创 2013-07-25 15:19:47 · 1102 阅读 · 0 评论 -
理解背包问题
问题:有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。所谓01背包,表示每一个物品只有一个,要么装入,要么不装入。初始化:(1)若要求背包必须放满,则初始如下:f[0] = 0 , f[1...V]表示-INF。表示当容积为0时,只接受一个容积为0的物品入包。(2)若要求背包可以空下,则初始化如下:f[0.原创 2013-07-30 19:30:06 · 1232 阅读 · 0 评论 -
堆排序
#include#define N 9void AdjustHeap(int a[],int hn, int i){ int left=2*i+1,right=2*i+2; //i的左右孩子 int smallest=i,temp; while(left<hn || right<hn) { if(left<hn && a[left]<a[smallest])原创 2013-07-11 14:22:21 · 828 阅读 · 0 评论 -
分治法的应用
例一:二分查找例二:计算X的n次幂。把线性级的时间复杂度降低到了lg级。#include//二分查找int BinSearch(int a[],int begin,int end,int s){ int low=begin,high=end,mid=(low+high)/2; if(a[begin]>s || a[end]<s) return -1; while(low原创 2013-07-09 18:28:04 · 1642 阅读 · 0 评论 -
整数划分问题
描述Given two positive integers N and M, please divide N into several integers A1, A2, ..., Ak (k >= 1), so that:1. 0 2. A1 + A2 + ... + Ak = N;3. A1, A2, ..., Ak are different with each oth原创 2015-01-05 11:52:52 · 1119 阅读 · 0 评论