ac_786第k个数
题目描述 题目大意&链接给定一个长度为n的乱序数列,用快速选择算法求出数列从小到大排序后的第 k 个数。 输入输出样例:输入: 5 32 4 1 5 3 输出: 3 详情:ac_786第k个数 解题思路这题是在快排算法上的pro版,需要你在每排序完一次,都需要与 k 做个判断:数列的哪边继续递归排序。 定义 <= x 的一边元素数量为s1: int s1 = j - l + 1; 当 k <= s1 时,递归排序数列的左边;否则递归排序数列的右边 if(k <= s1) return quick_sort(l, j, k);else return quick_sort(j+1, r, k-s1); l == r 时,即代表找到第 k 个排序后的元素 int quick_sort(int l, int r, int k){ if(l == r) return q[l]; ... int s1 = j - l + 1; if(k <= s1) return quick_sort(l,...
ac_785快速排序
题目描述 题目大意&链接给定一个长度为n的乱序数列,用快速排序将数列排成有序数列。 输入输出样例:输入: 53 1 2 4 5 输出: 1 2 3 4 5 详情:ac_785快速排序 解题思路快速排序主要就是分治思想,将数列以枢轴x为标准,划分为两个区间(i<=x 和 j>=x),划分好后重新选取枢轴x依次递归处理其左右区间。 枢轴选取: 共有四种选取方式:左端点q[l],右端点q[r],中间索引q[l + r >> 1] 和 随机索引(这里我一般取中间索引作枢轴) int x = q[l + r >> 1], i = l - 1, j = r + 1; 调整区间: 定义i和j两个指针,i指向<=x的区间,j指向>=x的区间 int x = q[l + r >> 1], i = l - 1, j = r + 1; 递归处理左右区间 quick_sort(q, l, j);quick_sort(q, j+1...
学习markdown语法
标题一标题二标题三 这是一段引用 有序列表:把大象放进冰箱: 打开冰箱 把大象塞进去 吃饭 睡觉 打豆豆 关上冰箱 无序列表: 吃饭 睡觉 打豆豆 明天要做的事情: 吃饭 睡觉 打豆豆 int main(){ printf("hello world!); return 0;} 表格: 姓名 年龄 成绩 张三 19 99 李四 20 100 横线: 哈哈哈 百度百度百度 请参考标题1 URL:http://baidu.com 斜体粗体printf("hello world!")下划线
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub. Quick StartCreate a new post$ hexo new "My New Post" More info: Writing Run server$ hexo server More info: Server Generate static files$ hexo generate More info: Generating Deploy to remote sites$ hexo deploy More info: Deployment
