算法导论2
文章平均质量分 52
谭墨墨快乐
这个作者很懒,什么都没留下…
展开
-
记录自己的学习
以前看算法导论,只是草草的看了重要的章节。写下此篇文章,记录自己的学习,看见自己的成长。原创 2012-06-04 14:21:02 · 405 阅读 · 0 评论 -
猜结果游戏
一、引言 穷举是解决问题的一种常用思路,当对一个问题无从下手的时候,可以考虑在问题域允许的范围内将所有可能的结果穷举出来,然后根据正确结果的判断规则对这些结果逐个验证,从而找出正确的结果。采用穷举的方法求解问题的答案比较适合计算机做,对这种体力活它们没有怨言,本文就以常见的两个猜结果的题目为例,介绍一下如何通过计算机程序解决此类问题,顺便介绍一下穷举法常见的算法结构和实现方转载 2012-06-12 20:21:41 · 1348 阅读 · 0 评论 -
第6章 论堆排序
堆排序可以再O(nlogn)的时间内将数进行排序,不像归并排序,它是一种原地排序算法。// 堆排序.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#includeusing namespace std;/*保持最大堆性质程序,时间复杂度为O(logn)*/void Max_heapify(int a[],int i,int h原创 2012-06-10 20:00:57 · 497 阅读 · 0 评论 -
算法导论 6-3 Young 氏矩阵
一个m x n的Young氏矩阵(Young tableau)是一个m x n的矩阵,其中每一行的数据都从左到右排序,每一列的数据都从上到下排序。Young氏矩阵中可能会有一些∞数据项,表示不存在的元素。所以,Young氏矩阵可以用来存放r≦mn个有限的数。 a)画一个包含元素{9,6,3,2,4,8,5,14,12}的4 x 4的Young氏矩阵。 b)讨论一个m x n的Y转载 2012-06-10 21:38:03 · 926 阅读 · 0 评论 -
算法导论 逆序对问题
先是逆序对的定义:一个n个互异元素的数组a,求满足ia[j]条件的数对个数。数据输入:n(元素个数),a数组数据输出:逆序对个数算法分析:这个题目十分的经典,是归并排序的一个完美应用,分治是其主要思想,具体可以概括假设f(i,j)为i到j号元素中的逆序对个数,取一个分割点k,假设s(i,j,k)表示以k为分割点,第一个元素在i到k中,第二个元素在k+1到j中形成的逆序对数。那么我们就得转载 2012-06-08 17:10:40 · 4145 阅读 · 1 评论 -
算法导论 2.3-7
// 算法导论 两和等于特定数问题.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#includeusing namespace std;int BinarySearch(int a[],int l,int h,int x){ while(l<=h) { int mid=(l+h)/2; if(a[mid]==原创 2012-06-08 18:09:28 · 739 阅读 · 0 评论 -
插入排序的递归实现
#include void Insert(int *a,int n)//把数组a的第n个数插入前n-1个数中,注意前n-1个数已经是排好序的了 { int i=n-1; int key=a[n]; while((i>=0)&&(key<a[i])) { a[i+1]=a[i]; i--;转载 2012-06-07 21:42:57 · 3433 阅读 · 0 评论 -
分治法(归并排序)
// 分治法.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include#include#include#define MAX 30using namespace std;int L[MAX];int R[MAX];void Merge(int a[],int p,int q,int r){ int n原创 2012-06-05 10:10:49 · 434 阅读 · 0 评论 -
算法导论 习题2.1-4
有两个各存放在数组A和B中的n位二进制整数,考虑它们的相加问题。两个整数的和以二进制形式存放在具有(n+1)个元素的数组C中。请给出这个问题的形式化描述,并写出伪代码。以下是我写的C++代码,如有错误请指出#include "stdafx.h"#include#include#define n 20using namespace std;void add(int a[]原创 2012-06-04 14:52:45 · 758 阅读 · 0 评论 -
插入排序&&选择排序
// 插入排序.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#includeusing namespace std;void InsertSort(int a[],int n){ for(int j=1;j<n;j++) { int k=a[j]; int i=j-1; while(i>=0&&a[i]原创 2012-06-04 17:01:04 · 424 阅读 · 0 评论