pivot

Python排序算法(一)——快速排序

瘦欲@ 提交于 2020-08-11 04:45:34
有趣的事,Python永远不会缺席! 如需转发,请注明出处: 小婷儿的python https://www.cnblogs.com/xxtalhr/p/10768593.html   排序算法(Sorting algorithm)是计算机科学最古老、最基本的课题之一。要想成为合格的程序员,就必须理解和掌握各种排序算法。其中”快速排序”(Quicksort)使用得最广泛,速度也较快。它是图灵奖得主C. A. R. Hoare(托尼·霍尔)于1960时提出来的。 一、快速排序(Quicksort)   快速排序(quick sort)的采用了分治的策略。由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以 递归 进行,以此达到整个数据变成有序 序列 。 1、原理 在数列之中,选择一个元素作为”基准”(pivot),或者叫比较值。 数列中所有元素都和这个基准值进行比较,如果比基准值小就移到基准值的左边,如果比基准值大就移到基准值的右边 以基准值左右两边的子列作为新数列,不断重复第一步和第二步,直到所有子集只剩下一个元素为止。 举个例子,假设我现在有一个数列需要使用快排来排序:[11, 99, 33 , 69, 77,

排序(二)时间复杂度为O(nlogn)的排序算法

∥☆過路亽.° 提交于 2020-08-10 20:17:37
时间复杂度为O(nlogn)的排序算法(归并排序、快速排序),比时间复杂度O(n²)的排序算法更适合大规模数据排序。 归并排序 归并排序的核心思想 采用“分治思想”,将要排序的数组从中间分成前后两个部分,然后对前后两个部分分别进行排序,再将排序好的两部分合并在一起,这样数组就有序了。 分治是一种解决问题的思想,递归是一种编程技巧,使用递归的技巧就是,先找到递归公式和终止条件,然后将递归公式翻译成递归代码。 归并排序的递推公式和终止条件: //递归公式 merge_sort(p...r) = mege(merge_sort(p...q),merge_sort(q+1,r)); //终止条件 p >= r,不再继续分解 归并排序代码 public class MergeSort { public static void main(String[] args) { int[] a = {4, 3, 2, 1, 6, 5}; mergeSort(a,0,a.length - 1); for (int i : a) { System.out.println(i); } } public static void mergeSort(int[] a, int p, int r) { //终止条件 if (p >= r) return; int q = (r - p) / 2 + p; /

Redis基础知识

…衆ロ難τιáo~ 提交于 2020-08-10 16:54:19
1、什么是Redis Redis是一个高性能的key-value内存数据库,是一种非关系型数据库。 2、Redis的五种数据类型: redis的五种数据类型分别为:String(字符串)、列表(List)、哈希(Hash)、Set(集合)、ZSet(有序集合) 在Redis5.0以后又加入了stream数据类型,stream的典型应用有生产者消费者队列等(list也能做,但stream更好,比如stream能够支持持久化,而list不能)。 3、Redis的作用 使用缓存的主要目的是提升查询速度和保护数据库等稀缺资源不被占满。 4、Redis的缓存穿透、缓存击穿、缓存雪崩 缓存穿透指的是在Redis中没有请求的数据,导致大量的数据库请求,且数据库中可能依然没有相应的数据。(不排除有恶意的数据库攻击),通常需要给查不到的数据设置一个空值,或者使用布隆过滤器的方式进行拦截。 缓存击穿是指一个热点key被大量访问,由于突然的缓存时间过期等原因,导致的大量的数据库请求,应对策略是对某些热点key不设置过期时间,或者使用锁限制请求。 缓存雪崩是数据库中的大量缓存过期,导致的大量数据库请求。应对策略通常是对不同的key使用随机的过期时间,保证过期时间尽可能的均匀分布,对热点数据不设置过期时间。 5、Redis的使用 启动redis服务:nohup redis-server 登录redis客户端

十大排序算法

☆樱花仙子☆ 提交于 2020-08-10 01:40:19
本博客只写实现的思想,相关代码地址在: gitee github 排序动画演示: 排序动画演示 0、排序算法概述 0.1 排序算法分类 十种常见排序算法可以分为两大类: 比较类排序 :通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。 非比较类排序 :不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序。 0.2 算法复杂度 快速记忆上表打油诗 : 30秒让你记住所有排序算法-宋词记忆法 . 0.3 复杂度分析递推式 . 0.4 相关概念 稳定 :如果a原本在b前面,而a=b,排序之后a仍然在b的前面。 不稳定 :如果a原本在b的前面,而a=b,排序之后 a 可能会出现在 b 的后面。 时间复杂度 :对排序数据的总的操作次数。反映当n变化时,操作次数呈现什么规律。 空间复杂度 :是指算法在计算机内执行时所需存储空间的度量,它也是数据规模n的函数。 1、冒泡排序(Bubble Sort) 冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。 1.1 经典冒泡

四、归并排序 && 快速排序

江枫思渺然 提交于 2020-08-10 00:37:25
一、归并排序 Merge Sort 1.1、实现原理 如果要排序一个数组,我们先把数组从中间分成前后两部分,然后对前后两部分分别排序,再将排好序的两部分合并在一起,这样整个数组就都有序了。 归并排序使用的就是分治思想。分治,顾名思义,就是 分而治之 ,将一个大问题分解成小的子问题来解决。小的子问题解决了,大问题也就解决了。 分治思想跟递归思想很像。分治算法一般都是用递归来实现的。 分治是一种解决问题的处理思想,递归是一种编程技巧,这两者并不冲突。 写递归代码的技巧就是,分析得出递推公式,然后找到终止条件,最后将递推公式翻译成递归代码。所以,要想写出归并排序的代码,我们先写出归并排序的递推公式。 递推公式:erge_sort(p…r) = merge(merge_sort(p…q), merge_sort(q+1…r)) 终止条件:p >= r 不用再继续分解 merge_sort(p…r)表示,给下标从 p 到 r 之间的数组排序。 我们将这个排序问题转化为了两个子问题, merge_sort(p…q) 和 merge_sort(q+1…r),其中下标 q 等于 p 和 r 的中间位置,也就是 (p+r)/2。 当下标从 p 到 q 和从 q+1 到 r 这两个子数组都排好序之后,我们再将两个有序的子数组合并在一起,这样下标从 p 到 r 之间的数据就也排好序了。 实现思路如下:

首次引入NVIDIA GPU 迈创全新显卡正式出货:4卡16屏

对着背影说爱祢 提交于 2020-08-10 00:11:09
  今年 1 月底,曾经大名鼎鼎的显卡品牌 Matrox (迈创)低调回归,发布了全新的 Matrox D 系列多屏显卡,而且首次使用了 NVIDIA GPU 方案。将近四个月后,这款产品终于开始上市了。   Matrox 来自加拿大,成立于 1976 年,比 ATI 早了 9 年,比 NVIDIA 更是早了 17 年,2D 显卡时代声名显赫,可是进入 3D 游戏时代后逐渐落寞,本世纪初停止了 GPU 的研发,转入视频市场,产品有编解码卡、帧捕捉器、2D/3D 深度学习图像软件、多屏宝等等,此前一直与 AMD 密切合作。   新发布的 Matrox D 系列采用特别定制的 NVIDIA Quadro GPU,但具体架构和规格一直没公布,只说支持 DX12、OpenGL 4.5、OpenCL 1.2,猜测至少是帕斯卡架构。   其中,Matrox D1480 是高端型号,配备四个 DisplayPort 1.2 接口,单个屏幕最高分辨率 5120×3200/60Hz,四屏就是 6550 多万像素,而且支持四卡并行,可以单系统输出 16 块屏幕。   Matrox D1450 则是四个 HDMI 2.0,单屏最高分辨率 4096×2160/60Hz。   二者均支持独立桌面模式、拉伸桌面模式、克隆模式、Pivot 模式和边缘重叠、边框管理、EDID 管理等技术。   D1480

用Tableau实现动画数据可视化

不问归期 提交于 2020-08-09 19:54:44
作者|PRANAV DAR 编译|VK 来源|Analytics Vidhya 概述 动画可视化是一种艺术,它很容易在Tableau中创造出来 我们将在这里使用开源数据集,并在Tableau中创建自己的动画可视化 介绍 我是动画视觉化的超级粉丝。我喜欢数据点在我屏幕上跳舞的方式。他们用线条和点来讲述他们自己的故事。设计一个动画是一种艺术。 我经常用动画形象来展示板球比赛的进展,或篮球的点数,或足球传球比赛的演变(是的,我是个体育迷)。 在我的工作表上,看着这些点互相交谈,并取得进展,这是十分愉快的事情。 相信我,一旦你开始在Tableau中构建这些动画的可视化效果,就没有回头路了。你会像我一样上瘾,想找任何借口把图像转换成动画形式。 我收到了很多来自社区成员和学生的要求,如何使动画可视化。 所以我决定为大家写这篇文章。这是一个简单的前提——我们将使用开源数据,并尝试创建汉斯·罗斯林的标志性可视化。 https://www.youtube.com/watch?v=jbkSRLYSojo 以下是我们将在Tableau中构建的动画可视化体验: https://cdn.analyticsvidhya.com/wp-content/uploads/2020/06/animated_visualization_tableau.mp4?_=1 目录 为什么要使用动画可视化? 理解问题陈述

用Tableau实现动画数据可视化

こ雲淡風輕ζ 提交于 2020-08-09 13:02:47
作者|PRANAV DAR 编译|VK 来源|Analytics Vidhya 概述 动画可视化是一种艺术,它很容易在Tableau中创造出来 我们将在这里使用开源数据集,并在Tableau中创建自己的动画可视化 介绍 我是动画视觉化的超级粉丝。我喜欢数据点在我屏幕上跳舞的方式。他们用线条和点来讲述他们自己的故事。设计一个动画是一种艺术。 我经常用动画形象来展示板球比赛的进展,或篮球的点数,或足球传球比赛的演变(是的,我是个体育迷)。 在我的工作表上,看着这些点互相交谈,并取得进展,这是十分愉快的事情。 相信我,一旦你开始在Tableau中构建这些动画的可视化效果,就没有回头路了。你会像我一样上瘾,想找任何借口把图像转换成动画形式。 我收到了很多来自社区成员和学生的要求,如何使动画可视化。 所以我决定为大家写这篇文章。这是一个简单的前提——我们将使用开源数据,并尝试创建汉斯·罗斯林的标志性可视化。 https://www.youtube.com/watch?v=jbkSRLYSojo 以下是我们将在Tableau中构建的动画可视化体验: https://cdn.analyticsvidhya.com/wp-content/uploads/2020/06/animated_visualization_tableau.mp4?_=1 目录 为什么要使用动画可视化? 理解问题陈述

MYSQL 行转列 Pivot 动态 思路

别说谁变了你拦得住时间么 提交于 2020-08-09 05:52:57
SQL Server行转列、不确定列的行转列 - 农村的码农 - 博客园 https://www.cnblogs.com/kylan/p/10844414.html mysql 行转列 列转行 - 平凡希 - 博客园 https://www.cnblogs.com/xiaoxi/p/7151433.html Pivot Tables in MySQL https://codingsight.com/pivot-tables-in-mysql/ Pivoting in MySQL http://mysql.rjweb.org/doc.php/pivot MySQL - Creating a pivot query | mysql Tutorial https://riptutorial.com/mysql/example/10441/creating-a-pivot-query Mysql - MySQL Pivot Handling Values https://www.howtobuildsoftware.com/index.php/how-do/cnlj/mysql-pivot-mysql-pivot-handling-values How can I return pivot table output in MySQL? - Stack Overflow https:/

配色主题美化Windows Terminal

|▌冷眼眸甩不掉的悲伤 提交于 2020-08-08 10:26:13
使用最新版的Windows10和WSL2必须要用到的Windows Terminal才算忠实的微软粉丝。 1. win10商店里下载Windows Terminal: https://www.microsoft.com/zh-cn/p/windows-terminal/9n0dx20hk701?activetab=pivot:overviewtab 2. 打开WSL2功能并安装对应的ubuntu 3. 自定义配色方案美化Windows Termainl 点击“设置”打开json文件修改配置。 给ubuntu添加配色主题和背景图案。如下图所示: 在配置文件json里添加背景图片路径和不透明度。可以查看微软官方文档: https://docs.microsoft.com/zh-cn/windows/terminal/customize-settings/profile-settings { "guid": "{2c4de342-38b7-51cf-b940-2309a097f518}", "hidden": false, "name": "Ubuntu", "source": "Windows.Terminal.Wsl", "colorScheme": "Solarized Light", "backgroundImage": "C:/Users/finch/Pictures/0