算法设计与分析
奶牛且橘子98
这个作者很懒,什么都没留下…
展开
-
Dijkstra(迪杰斯特拉)单元最短路径问题
代码如下#include<iostream>using namespace std;#define maxint 32767int secl(int* s, int* dist, int n) { int v = maxint; for (int i = 1; i <= n; i++) { if (s[i] == 0) { if (dist[i] < v) { v = dist[i]; } } } for (int i = 1; i &l原创 2020-06-17 23:41:02 · 271 阅读 · 0 评论 -
分治法解决二分查找问题
二分查找技术二分搜索技术是运用分治策略的典型例子。给定已排好序的n个元素a[0:n-1],现在要在这n个元素里面找出一个特定的元素x。首先想到的是顺序搜索方法,逐个比较a[0:n-1]中元素,直至找出元素x或搜索整个数组后确定x不在其中。这个方法没有利用n个元素已经排好序的条件,因此在最坏条件下,顺序搜索方法需要O(n)次比较。二分搜索方法充分利用了元素间次序关系,采用分治策略,可在最坏情况下用O(logn)时间完成搜索任务。二分搜索算法的基本思想是:将n个元素分成个数大致相同的两半,取a[n/2]于x原创 2020-06-14 10:21:41 · 3349 阅读 · 0 评论 -
线性时间元素选择-舍伍德算法
线性时间元素选择-舍伍德算法代码如下RandomNumber.h#pragma once#include<ctime>#include<fstream>using namespace std;const unsigned long maxshort = 65536L;const unsigned long multiplier = 1194211693L;const unsigned long adder = 12345L;class RandomNumber {原创 2020-06-10 17:13:37 · 586 阅读 · 0 评论