算法
liuwxye
这个作者很懒,什么都没留下…
展开
-
希尔排序
希尔排序是基于插入排序的一种算法, 在此算法基础之上增加了一个新的特性,提高了效率。 Shell排序的执行时间依赖于增量序列。即希尔排序的时间复杂度与增量序列的选取有关,例如希尔增量时间复杂度为O(n²),而Hibbard增量的希尔排序的时间复杂度为O( ),希尔排序时间复杂度的下界是n*log2n。① 最后一个增量必须为1;② 应该尽量避免序列中的值(尤其是相邻的值)互为倍数的情况。#i原创 2017-09-13 14:08:49 · 250 阅读 · 0 评论 -
冒泡排序
C++ 实现冒泡排序#include "stdafx.h"#include <iostream>using namespace std;int main(){ int N; cin >> N; int *a = new int[N]; for (int i = 0; i<N; i++) { cin >> a[i]; } for原创 2017-09-11 15:29:35 · 199 阅读 · 0 评论 -
背包算法
DP算法:#include "stdio.h"int max(int a,int b){ return a>b?a:b;}int main(){ int need[]={0,2,3,4,1}; int value[]={0,2,5,3,2}; int m=5;//最大的背包容量 int best[6]={0}; for(int i =1;i<5;原创 2017-10-23 21:48:33 · 347 阅读 · 0 评论 -
Prim算法
普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树。意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点(英语:Vertex (graph theory)),且其所有边的权值之和亦为最小。 它是从点的方面考虑构建一颗MST,大致思想是:设图G顶点集合为U,首先任意选择图G中的一点作为起始点a,将该点加入集合V,再从集合U-V中找到另一点b使得点b到V中任意原创 2017-10-09 19:25:49 · 609 阅读 · 0 评论 -
二叉树求序
数组实现已知(中序+一序)求另一序#include "stdio.h"int pre[6],in[6],post[6];void solve(int preL,int inL,int postL,int n){ if(n==0) return; if(n==1){ post[postL] = pre[preL]; return; }原创 2017-09-12 14:34:30 · 211 阅读 · 0 评论 -
Floyd算法
// floyd.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include "stdio.h"#include "stdlib.h"#define MaxVertexNum 100#define INFINITY 65535typedef int Vertex;typedef char DataType;typedef int WeightT原创 2017-09-27 22:22:33 · 197 阅读 · 0 评论 -
插入排序
经典排序算法 – 插入排序Insertion sort 插入排序就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕。 下图演示了对4个元素进行直接插入排序的过程,共需要(a),(b),(c)三次插入。直接插入排序:#include <iostream>using namespace std;int main(){ int N,P,i; ci原创 2017-09-11 21:21:41 · 166 阅读 · 0 评论 -
Dijkstra算法
Dijkstra算法1.定义概览 Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法是很有代表性的最短路径算法,在很多专业课程中都作为基本内容有详细的介绍,如数据结构,图论,运筹学等等。注意该算法要求图中不存在负权边。问题描述:在无向图 G=(V,E) 中,假设每条边原创 2017-09-26 18:21:49 · 339 阅读 · 0 评论 -
归并排序(非递归实现)
我们知道,递归实现的缺点就是会一直调用栈,而栈内存往往是很小的。所以,我们尝试着用循环的办法去实现归并排序。之气提到过,归并排序的基本思路是将待排序序列R[0…n-1]看成是n个长度为1的有序序列,将相邻的有序表成对归并,得到n/2个长度为2的有序表;将这些有序序列再次归并,得到n/4个长度为4的有序序列;如此反复进行下去,最后得到一个长度为n的有序序列。综上可知:归并排序其实要做两件事:(1)“分原创 2017-09-14 18:39:50 · 16416 阅读 · 3 评论 -
归并排序(递归实现)
归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法。 归并过程为:比较a[i]和b[j]的大小,若a[i]≤b[j],则将第一个有序表中的元素a[i]复制到r[k]中,并令i和k分别加上1;否则将第二个有序表中的元素b[j]复制到r[k]中,并令j和k分别加上1,如此循环下去,直到其中一个有序表取完,然后再将另一个有序表中剩余的元素复制到r中从下标k到下标t的单元。归并排序的算原创 2017-09-13 15:41:12 · 403 阅读 · 0 评论 -
n皇后
问题描述:n个元素,任意两个不在同一行同一列,且不在对角线上的可能性。#include <iostream>#include <vector>#include <algorithm>using namespace std;int sum = 0;int visit[100000];//int p[100000];vector<int>...原创 2019-05-22 16:16:13 · 255 阅读 · 0 评论