算法
开心笑
C 算法 网络 嵌入式 Linux
展开
-
在N个不同的元素中寻找最大元素
#include #define N 10int Findmax(int a[], int n){ int i = 0; int max = a[0]; i = 1; while (i { if (max { max = a[i]; } i++; } return max;}int main(void){原创 2011-11-20 10:15:35 · 874 阅读 · 0 评论 -
模拟退火算法解决TSP问题
#include #include #include #include #define T0 100#define TF 0.01#define T 0.95#define N 100#define M 5#define S 9999int s[M][M] = {{S, 3, 3, 2, 6}, {3, S, 7, 3, 2}, {3, 7, S, 2,原创 2011-11-29 18:53:03 · 1791 阅读 · 0 评论 -
0/1背包问题的模拟退火算法
#include #include #include #include #define T0 1000#define TF 0.01#define T 0.95#define N 1000#define M 50int weight[M]= { 80, 82, 85, 70, 72, 70, 66, 50, 55, 25,原创 2011-11-29 14:11:34 · 3444 阅读 · 0 评论 -
0/1背包问题遗传算法
#include #include #include #define popsize 200#define pc 0.618#define pm 0.03#define lchrom 50#define maxgen 1000struct population{ int chrom[lchrom]; double weight; double fit原创 2011-11-23 21:32:11 · 1498 阅读 · 0 评论 -
0/1背包问题的贪心算法
利用贪心算法解决0/1背包问题时,需要确定装入的原则,大致可分三类:按重量的大小,按价值的大小,按价值与重量比的大小来确定装入的顺序。设有5个物品,重量分别为 2 2 6 5 4 ,价值分别为 6 3 5 4 6,背包的最大容量为 10。1. 按重量从小到大装入时: 可装入第1 2 5 三个物品, 价值为 152.按价值从大到小装入时: 可装入第1 5 2 三个物品,价原创 2011-11-22 15:10:54 · 2479 阅读 · 0 评论 -
二分查找的非递归程序(折半查找)
#include int binarysearch(int a[], int low, int high, int x){ int mid; while (low { mid = (low + high) / 2; if (x == a[mid]) return mid; else if (x high = mid -1; else原创 2011-11-20 17:54:13 · 755 阅读 · 0 评论 -
求两个正整数的最大公约数(GCD)
#include void swap(int *m, int *n){ int temp = 0; temp = *m; *m = *n; *n = temp;}int GCD(int m, int n){ int r; if (m { swap(&m, &n); } while (r = m % n) { m = n;原创 2011-11-20 10:03:38 · 1896 阅读 · 0 评论 -
二分查找的递归算法(折半查找)
#include int binarysearch(int a[], int low, int high, int x){ int mid; if (low > high) return -1; else { mid = (low + high) / 2; if (x == a[mid]) return mid; else if (x原创 2011-11-20 18:14:59 · 1811 阅读 · 0 评论 -
对有序表的查找(快步搜索算法)
/*伪代码:Input: 表L, 表的长度n, 步长s, 元素xOutput: x所在的位置Algorithm QS(L, M, N, S, X) //在长度为N的有序表中以S为步长,查找X所在的位置begin m:=s + m; while m case x = L(m); return m; x otherwise m:= m+s原创 2011-11-20 17:43:06 · 1403 阅读 · 0 评论 -
搜索问题(查找X是否在数据中)
问题: 查找X是否在数组中?#include #define N 10#define X 88int Search(int a[], int n, int x){ int i = 0; while (i { if (x == a[i]) return i; i++; } return -1;}int mai原创 2011-11-20 10:31:03 · 778 阅读 · 0 评论 -
最小生成树之克鲁斯卡尔(Kruskal)算法、普里姆(prim)算法
问题描述: 在一个具有几个顶点的连通图G中,如果存在子图G'包含G中所有顶点和一部分边,且不形成回路,则称G'为图G的生成树,其中代价最小的生成树则称为最小生成树。例如,设有下图G, 找出连接图G所有顶点(v1,v2,v3,v4,v5,v6)的边,且这些边的权重之和最小。那么如何生成该最小生成树呢?两个经典算法是普里姆(Prim)算法和克鲁斯卡(Kruskal原创 2012-01-04 11:09:32 · 9054 阅读 · 2 评论