排序
touso
这个作者很懒,什么都没留下…
展开
-
堆排序
堆排序大顶堆:每个节点的值大于等于子节点的值(升序排列)小顶堆:每个节点的值小于等于子节点的值(降序排列)堆实际上是完全二叉树思想:每次维护大顶堆的时候堆顶为最大值,将堆顶与堆尾的元素交换,进行n-1次#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;const int maxn=1e6+10;int n,a[maxn];void heapadjust(原创 2020-11-09 20:51:36 · 78 阅读 · 0 评论 -
快速排序
链接每次选取一个基值,进行排序,寻找一个位置,将基值放入,使左侧的值都比基值小,右侧的值都比基值大。重复此操作知道序列有序。#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;const int maxn=1e6+10;int n,a[maxn];void quicksort(int l,int r){ int mid=a[(l+r)>>1];原创 2020-11-09 19:48:15 · 67 阅读 · 0 评论 -
sort排序
sort排序#include<stdio.h>#include<string.h>#include<functional>#include<algorithm>using namespace std;int main(){ int a[10]={5,3,7,1,10,2,6,4,8,9}; sort(a,a+10); ...原创 2019-12-16 20:03:56 · 111 阅读 · 0 评论 -
Frosh Week(归并排序)
添加链接描述题意:将序列排序,输出最小交换次数#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;const int maxn=1e6+10;typedef long long ll;int a[maxn],tmp[maxn];ll ans=0;void merge(int *a,int l,int mid,int r)//具体排序过程{ int i,j原创 2020-11-07 19:10:07 · 252 阅读 · 0 评论 -
冒泡排序及优化
冒泡排序:每次将最大(最小)的数放到数组的最后一位,最后得到有序的序列#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;int main(){ int a[1010]; int n; scanf("%d",&n); for(int i=0;i<n;i++) scanf("%d",&a[i]); for(int i=0;i<n原创 2020-11-08 19:15:12 · 83 阅读 · 0 评论 -
桶排序
1.计数排序适用范围:数据比较大但是数据范围比较小思想:用count数组将每个数字出现的次数记录下来,然后遍历整个范围将数组输出排序不稳定2.基数排序思想:计算所需排序的数组的最大数有几位,从个位开始排序,一直到最高位排序稳定3.桶排序思想:计算数组长度,分配桶的个数,将数组里的数填入对应的桶里,对每一个桶进行排序,然后输出选取桶的个数比较困难,最差情况会出现n方的复杂度...原创 2020-11-08 23:12:13 · 82 阅读 · 0 评论