基础算法
算法的基础知识
_洋
一起学习吧
展开
-
逆序对的数量
逆序对的数量给定一个长度为 n 的整数数列,请你计算数列中的逆序对的数量。逆序对的定义如下:对于数列的第 i个和第 j个元素,如果满足 i<j且 a[i]>a[j],则其为一个逆序对;否则不是。输入格式第一行包含整数 n,表示数列的长度。第二行包含 n 个整数,表示整个数列。输出格式输出一个整数,表示逆序对的个数。数据范围1≤n≤100000,数列中的元素的取值范围 [1,10^9]。输入样例:62 3 4 5 6 1输出样例:5两层循环,如果有a[i]<原创 2021-11-10 23:58:00 · 169 阅读 · 0 评论 -
归并排序算法
归并排序题目:归并排序:给定你一个长度为 n 的整数数列。请你使用归并排序对这个数列按照从小到大进行排序。并将排好序的数列按顺序输出。输入格式输入共两行,第一行包含整数 n。第二行包含 nn个整数(所有整数均在 1∼10^9范围内),表示整个数列。输出格式输出共一行,包含 n 个整数,表示排好序的数列。数据范围1≤n≤1000001≤n≤100000输入样例:53 1 2 4 5输出样例:1 2 3 4 5代码:using namespace std;#includ原创 2021-11-04 22:45:19 · 90 阅读 · 0 评论 -
第k个数——快选
第k个数1.题目给定一个长度为 n 的整数数列,以及一个整数 k,请用快速选择算法求出数列从小到大排序后的第 k 个数。输入格式第一行包含两个整数 n 和 k。第二行包含 n 个整数(所有整数均在 1∼109 范围内),表示整数数列。输出格式输出一个整数,表示数列的第 k 小数。数据范围1≤n≤100000,1≤k≤n输入样例:5 32 4 1 5 3输出样例:32.思路(1)直接使用快速排序,然后取下标为k-1的数using namespace std;#includ原创 2021-11-04 09:47:32 · 150 阅读 · 0 评论 -
快速排序算法
快速排序思路:代码:using namespace std;#include <bits/stdc++.h>const int N=1e6+10;int q[N];void quick_sort(int *q,int l,int r){ //判边界 if(l>=r)return; //第一步:分成子问题 int x=q[(l+r)/2]; int i=l-1,j=r+1;//这里为什么要加1和减1是因为:原创 2021-11-02 22:55:53 · 168 阅读 · 0 评论 -
枚举基础算法知识
枚举1.枚举定义2.枚举思想3.枚举步骤4.实例1.砝码数量问题2.百钱买百鸡2.运算符问题1.枚举定义枚举法就是按问题本身的性质,一一列举出该问题所有可能的解,并在逐一列举的过程中,检验每个可能解是否是问题的真正解,若是,我们采纳这个解,否则抛弃它。在列举的过程中,既不能遗漏也不应重复。2.枚举思想一一列举出该问题所有可能的解,并在逐一列举的过程中,检验每个可能解是否是问题的真正解,若是,我们采纳这个解,否则抛弃它。在列举的过程中,既不能遗漏也不应重复。3.枚举步骤(1)确定枚举对象(即问题解原创 2021-10-10 21:28:05 · 729 阅读 · 0 评论