摘要: Wiki: 快速选择的总体思路与快速排序一致,选择一个元素作为基准来对元素进行分区,将小于和大于基准的元素分在基准左边和右边的两个区域。不同的是,快速选择并不递归访问双边,而是只递归进入一边的元素中继续寻找。这降低了平均时间复杂度,从O(n log n)至O(n),不过最坏情况仍然是O(n2)。 c 阅读全文
posted @ 2020-10-24 21:31 z974890869 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 代码太烂:不简洁 1 #pragma once 2 /* 3 事实上,我们只需要最多3 Ln/2」次比较就可以同时找到最小值和最大值。具体的方法是记 4 录已知的最小值和最大值。但我们并不是将每一个输入元素与当前的最小值和最大值进行比 5 团丑较这样做的代价是每个元素需要2次比较,而是对输入元素成对 阅读全文
posted @ 2020-10-24 19:33 z974890869 阅读(94) 评论(0) 推荐(0) 编辑
摘要: #pragma once #include<vector> #include<algorithm> #include<string> #include<sstream> //stringstream #include<iomanip> //setw setfill //内置变量pass-by-val 阅读全文
posted @ 2020-10-22 21:28 z974890869 阅读(37) 评论(0) 推荐(0) 编辑
摘要: 基数排序(英语:Radix sort)是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数,所以基数排序也不是只能使用于整数。基数排序的发明可以追溯到1887年赫尔曼·何乐礼在打孔卡片制表机(Tabul 阅读全文
posted @ 2020-10-22 21:23 z974890869 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 简介:Wiki 通俗地理解,例如有10个年龄不同的人,统计出有8个人的年龄比A小,那A的年龄就排在第9位,用这个方法可以得到其他每个人的位置,也就排好了序。当然,年龄有重复时需要特殊处理(保证稳定性),这就是为什么最后要反向填充目标数组,以及将每个数字的统计减去1。算法的步骤如下: 找出待排序的数组 阅读全文
posted @ 2020-10-18 21:25 z974890869 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 优先队列: 是计算机科学中的一类抽象数据类型。优先队列中的每个元素都有各自的优先级,优先级最高的元素最先得到服务;优先级相同的元素按照其在优先队列中的顺序得到服务。优先队列往往用堆来实现。 1 #pragma once 2 #include<vector> 3 #include<stdexcept> 阅读全文
posted @ 2020-10-18 18:20 z974890869 阅读(61) 评论(0) 推荐(0) 编辑
摘要: https://blog.csdn.net/weiyuefei/article/details/51563890 写的清楚 就是不知道出处在哪 看到全是转载也不贴原址 一、程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分: 1、栈区(stack)— 由编译器自动分配释放 ,存放函 阅读全文
posted @ 2020-10-18 15:08 z974890869 阅读(100) 评论(0) 推荐(0) 编辑
摘要: from Wiki 概述 若以升序排序说明,把数组转换成最大堆(Max-Heap Heap),这是一种满足最大堆性质(Max-Heap Property)的二叉树:对于除了根之外的每个节点i, A[parent(i)] ≥ A[i]。 重复从最大堆取出数值最大的结点(把根结点和最后一个结点交换,把交 阅读全文
posted @ 2020-10-17 21:55 z974890869 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 算法导论(第三版)中文 P102 //RANDOMIZED_QUICKSORT.h文件 1 #pragma once 2 #include"QUICKSORT.h" 3 #include<iostream> 4 #include<random> 5 int Randomized_partition( 阅读全文
posted @ 2020-10-17 17:54 z974890869 阅读(107) 评论(0) 推荐(0) 编辑
摘要: QuickSort c++ 简介 算法导论 原理 from Wiki 非常快的排序算法: 划分两个子数组后 两个子数组之间不会进行比较 比较次数减少 所以算法变快 只要划分常数比例,算法的运行时间 : theta(nlgn); 执行顺序: 左侧排序完 在执行右侧 实验结果: C++ code #in 阅读全文
posted @ 2020-10-15 21:37 z974890869 阅读(93) 评论(0) 推荐(0) 编辑