排序
帅气的唐大帅
有梦想 才有动力
展开
-
归并排序和求逆序对
一个归并排序的代码#include<iostream>using namespace std;int a[500005],r[500005];void pai(int s,int e){ if(s==e) return;//小到只有一个数时就不要分了 int mid=(s+e)/2; pai(s,mid); pai(mid+1,e);//二分 把数组一步步变小 ...原创 2018-12-20 21:15:31 · 106 阅读 · 0 评论 -
拓扑排序
848. 有向图的拓扑序列给定一个n个点m条边的有向图,图中可能存在重边和自环。请输出任意一个该有向图的拓扑序列,如果拓扑序列不存在,则输出-1。若一个由图中所有点构成的序列A满足:对于图中的每条边(x, y),x在A中都出现在y之前,则称A是该图的一个拓扑序列。输入格式第一行包含两个整数n和m接下来m行,每行包含两个整数x和y,表示点x和点y之间存在一条有向边(x, y)...原创 2019-08-02 19:25:33 · 163 阅读 · 0 评论 -
快排
#include<bits/stdc++.h>using namespace std;void _sort(int a[],int l,int r){ if(l>r) return ; int s=l; int e=r; int flag=a[l]; while(l<r) { while(l<r&&a[r]>=flag)//从最右边开始 寻找到第一个小于标志位值的点 { r--; } a[l]=a[r];//替换.原创 2020-10-06 10:45:27 · 82 阅读 · 0 评论 -
堆排序
#include<bits/stdc++.h>using namespace std;void adjust_heap(int a[],int node,int len){ int l=node*2+1;//左节点 int r=node*2+2;//右节点 int index =node; if(l<len&&a[l]>a[index])//左节点存在 并且大于根节点 { index=l; //替换 } if(r<len&am.原创 2020-10-06 10:41:58 · 90 阅读 · 0 评论