【无标题】

一:快速排序模板

#include<iostream>
using namespace std;
int n;
const int N=1e6+10;
int q[N];
void quick_sort(int q[],int l,int r)
{
	if(l>=r)return;
	int i=l-1,j=r+1,x=q[l+r>>1];
	while(i<=j)
	{
		do i++;while(x<=q[i]);
		do j--;while(x>q[j]);
		if(i<=j)swap(q[i],q[j]);	
	}
} 
int main()
{
	int i;
	scanf("%d",&n);
	for(i=0;i<n;i++)
		scanf("%d",&q[i]);
	quick_sort(q,0,n-1);
	for(i=0;i<n;i++)
		printf("%d ",q[i]);
	return 0; 
}

二:归并排序模板

#include<iostream>
#include<algorithm>
using namespace std;
int n;
const int N=1e6+10;
int q[N],tmp[N];
void mergesort(int q[],int l,int r)
{
	if(l>=r)return;
	int mid=r+l>>1;
	mergesort(q,l,mid),mergesort(q,mid+1,r);
	int k=0,i=l,j=mid+1;
	while(i<=mid&&j<=r)
	{
		if(q[i]<=q[j])
			tmp[k++]=q[i++];
		else
			tmp[k++]=q[j++];
	}
	while(i<=mid)tmp[k++]=q[i++];
	while(j<=r)tmp[k++]=q[j++];
	for(i=l,j=0;i<=r;j++,i++)q[i]=tmp[j];
}
int main()
{
	int i;
	scanf("%d",&n);
	for(i=0;i<n;i++)
		scanf("%d",&q[i]);
	mergesort(q,0,n-1);
	for(i=0;i<n;i++)
		printf("%d ",q[i]);
	return 0; 
}

三:DFS(深度优先搜素算法)
1、基本概念

深度优先搜索算法(depth first search, 简称dfs) 是一种用于遍历或搜索树或图的算法。沿着数的深度遍历树的节点,尽可能深的搜索树的分支。当节点v所在边都已被探寻或者在搜索时节点不满足条件, 搜索将回溯到发现节点v的那条边的起始节点。整个进程反复进行直到所有满足条件的所有节点被访问为止。

2、算法思路
深度优先遍历图的方法是,从图中某顶点v出发:
(1)访问顶点v;

(2)依次从v的未被访问的邻接节点出发,对图进行深度优先遍历,直至途中和v有路径相通的顶点都被访问;

(3)若此图中尚有顶点未被访问,则从一个未被访问的顶点出发,重新进行深度优先遍历,直至图中所有顶点均被访问为止。

四:

二、BFS(广/宽度优先遍历)
1、基本概念

已知图G=(V, E)和一个源顶点s,宽度优先搜索以一种系统的方式探寻G的边,从而“发现”s所能到达的所有顶点,并计算s到所有这些顶点的距离(最少边数),该算法同时能生成一棵根为s且包括所有可达顶点的宽度优先树。对从s可达的任意顶点v,宽度优先树中从s到v的路径对应于图G中从s到v的最短路径,即包含最小边数的路径。

2、算法思路
之所以称之为宽度优先算法,是因为算法自始至终一直通过已找到和未找到顶点之间的边界向外扩展,就是说,算法首先搜索和s距离为k的所有顶点,然后再去搜索和S距离为k+l的其他顶点。
 

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值