分治
不想WA
记录我的学习笔记呀
展开
-
快速排序
基本思想快排的基本思想是分治,将数组A[p…r]划分为两个(可能为空)子数组A[p…q-1]和A[q+1…r],使得A[p…q-1]中的每个元素都小于等于A[q],而A[q]也小于等于A[q+1…r]中的每个元素,其中,计算下标q也是划分过程的一部分。大体过程通过上述的基本思想,写出大体代码如下void quicksort(int A[], int p, int r){ if(p >= r) return; else{ q = partition原创 2020-10-15 23:42:07 · 80 阅读 · 0 评论 -
求最大子数组问题
问题描述假定你获得了投资挥发性化学公司的机会。与其他公司一样,该公司的股票价格是不稳定的。你被准许可以在某个时刻买进一股该公司的股票,并在之后的某个时期将其卖出。你可以了解股票将来的价格,使得自己的利益最大化。你的任务是根据每天的股票价格,求得最大的收益。输入一个整数n,表示天数接下来一行,n个整数,用空格隔开,表示每天的股价。输出一个整数,表示最大收益。问题分析这类问题就是典型的最大子数组问题,可以通过将后一天的股票值减去前一天的股票值,即可得到这两天买入售出所盈利(亏损)的值。接着原创 2020-10-11 11:52:26 · 160 阅读 · 0 评论 -
归并之求逆序对个数
题目描述给定一个整数序列,求逆序对的个数主要思路将整个序列分为左右两边的序列,左右两序列都已按从小到大的顺序排列,此时逆序对的个数即加上左侧序列大于右侧序列的逆序对数。如左侧为(2,4,6),右侧为(1,3,5),通过循环发现 2>1,则易得后面的4,6均可与1形成逆序对(因为是按升序排列),基于此可写出代码代码呈现#include<bits/stdc++.h> //万能头文件using namespace std;#define N 1005000;int a[N]原创 2020-09-24 18:27:23 · 284 阅读 · 0 评论