算法.排序
茅坤宝骏氹
语言:Java、C/C++、C#、Python、Linux Shell。
框架:Spring、Spring MVC、Spring Boot、Spring Cloud、Hibernate、Mybatis、Freemarker、Velocity。
前端:HTML5、CSS3、JavaScript、Bootstrap、JQuery、Vue、React。
数据库:oracle、mysql、MongoDB、HBase。
缓存:Memcache、Redis。
消息队列:kafka。
大数据:Hadoop、Hive、Sqoop、Flume、Spark、Strom、OpenTSDB、Druid。
展开
-
算法九之基数排序
一、基数排序(1)基数排序的简介 基数排序不同于其他的排序算法,它不是基于比较的算法。基数排序是一种借助多关键字排序的思想对单逻辑关键字进行排序的方法。它是一种稳定的排序算法。 通常用于对数的排序选择的是最低位优先法,即先对最次位关键字进行排序,再对高一位的关键字进行排序,以此类推。(2)基数排序的思想 多关键字排序中有两种方法:最高位优先法(MSD)和最低位优先法(LSD)。原创 2017-11-26 17:58:15 · 337 阅读 · 0 评论 -
十大经典排序算法
转载自十大经典排序算法内容几乎完全来源于网络,整理人:hustcc来源:https://github.com/hustcc/JS-Sorting-Algorithm排序算法是《数据结构与算法》中最基本的算法之一。排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内...转载 2019-07-21 11:33:06 · 193 阅读 · 0 评论 -
漫画:什么是计数排序
转载自 漫画:什么是计数排序 假定20个随机整数的值如下:9,3,5,4,9,1,2,7,8,1,3,6,5,3,4,0,10,9 ,7,9如何给这些无序的随机整数排序呢?非常简单,让我们遍历这个无序的随机数列,每一个整数按照其值对号入座,对应数组下标的元素进行加1操作。比如第一个整数是9,那么数组...转载 2018-10-27 10:38:45 · 308 阅读 · 0 评论 -
漫画:什么是桶排序
转载自 漫画:什么是桶排序计数排序需要根据原始数列的取值范围,创建一个统计数组,用来统计原始数列中每一个可能的整数值所出现的次数。原始数列中的整数值,和统计数组的下标是一一对应的,以数列的最小值作为偏移量。比如原始数列的最小值是90, 那么整数95对应的统计数组下标就是 95-90 = 5。那么,桶排序当中所谓的“桶”,又是什么概念呢?每一个桶(bucket)代表一个区间范围...转载 2018-10-27 10:27:12 · 326 阅读 · 0 评论 -
这些排序算法的使用时机,你都知道吗?
转载自 这些排序算法的使用时机,你都知道吗?概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。我们这里说说八大排序就是内部排序。 当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。快速排序:是目前基于比较的内部排序中被认为是最好...转载 2018-09-23 11:19:28 · 902 阅读 · 0 评论 -
涨姿势,图文带你了解 8 大排序算法
转载自 涨姿势,图文带你了解 8 大排序算法排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。本文将依次介绍上述八大排序算法。算法一:插入排序插入排序是一种最简单直...转载 2018-10-04 12:15:22 · 249 阅读 · 0 评论 -
漫画:什么是鸡尾酒排序
转载自 漫画:什么是鸡尾酒排序那么,鸡尾酒排序又是何方神圣呢?我们这一期将会详细讲述。让我们首先来回顾一下冒泡排序的思想:冒泡排序的每一个元素都可以像小气泡一样,根据自身大小,一点一点向着数组的一侧移动。算法的每一轮从都是从左到右比较元素,进行单向的位置交换。那么鸡尾酒排序做了怎样的优化呢?鸡尾酒排序的元素比较和交换过程是双向的。让我们来举一个栗子:有8...转载 2018-09-27 19:09:46 · 296 阅读 · 0 评论 -
漫画:什么是堆排序
转载自 漫画:什么是堆排序在上一篇漫画中,小灰介绍了 二叉堆 这样一种强大的数据结构:漫画:什么是二叉堆?(修正版)那么,这个二叉堆怎样来使用呢?我们这一期将会详细讲述。 让我们回顾一下二叉堆和最大堆的特性:1.二叉堆本质上是一种完全二叉树2.最大堆的堆顶是整个堆中的最大元素当我们删除一个最大堆的堆顶(并不是完全删除,而是替换到最后面),经过自我调节...转载 2018-10-01 23:58:09 · 699 阅读 · 0 评论 -
漫画:什么是冒泡排序
转载自 漫画:什么是冒泡排序什么是冒泡排序?冒泡排序的英文Bubble Sort,是一种最基础的交换排序。大家一定都喝过汽水,汽水中常常有许多小小的气泡,哗啦哗啦飘到上面来。这是因为组成小气泡的二氧化碳比水要轻,所以小气泡可以一点一点向上浮动。 而我们的冒泡排序之所以叫做冒泡排序,正是因为这种排序算法的每一个元素都可以像小气泡一样,根据自身大小,一点一点向着数组的一侧移动。...转载 2018-07-23 20:34:11 · 751 阅读 · 0 评论 -
算法一之简单选择排序
一、 选择排序的思想 选择排序的基本思想是:每一趟在n-i+1(i=1,2,…n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录。基于此思想的算法主要有简单选择排序、树型选择排序和堆排序。 简单选择排序的基本思想:第1趟,在待排序记录r[1]~r[n]中选出最小的记录,将它与r[1]交换;第2趟,在待排序记录r[2]~r[n]中选出最小的记录,将它与r[2]交换原创 2017-11-26 17:56:03 · 234 阅读 · 0 评论 -
算法二之树形选择排序
一、树形选择排序的基本思想(1) 树形选择排序又称锦标赛排序(Tournament Sort),是一种按照锦标赛的思想进行选择排序的方法。首先对n个记录的关键字进行两两比较,然后在n/2个较小者之间再进行两两比较,如此重复,直至选出最小的记录为止。 (2) 树形选择排序(Tree Selection Sort),这个过程可用一棵有n个叶子结点的完全二叉树表示。 例如,图表中的原创 2017-11-26 17:56:06 · 514 阅读 · 0 评论 -
算法三之堆排序
一、堆(Heap)定义(1)n个关键字序列Kl,K2,…,Kn称为(Heap),当且仅当该序列满足如下性质(简称为堆性质): k(i) 当然,这是小根堆,大根堆则换成>=号。(2)k(i)相当于二叉树的非叶子结点,K(2i)则是左子节点,k(2i+1)是右子节点 若将此序列所存储的向量R[1..n]看做是一棵完全二叉树的存储结构,则堆实质上是满足如原创 2017-11-26 17:56:09 · 192 阅读 · 0 评论 -
算法四之冒泡排序
一、冒泡排序(Bubble Sort)思想(1)冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名。 (2)冒泡排序算法的运作如原创 2017-11-26 17:56:14 · 200 阅读 · 0 评论 -
算法五之快速排序
一、快速排序(Quicksort)思想 设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用数组的第一个数)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序。值得注意的是,快速排序不是一种稳定的排序算法,也就是说,多个相同的值的相对位置也许会在算法结束时产生变动。一趟快速排序的算法是:1)设置两个变量i、j,原创 2017-11-26 17:56:16 · 200 阅读 · 0 评论 -
算法六之直接插入排序
一、直接插入排序基本思想直接插入排序(straight insertion sort)的做法是: 每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。 第一趟比较前两个数,然后把第二个数按大小插入到有序表中; 第二趟把第三个数据与前两个数从后向前扫描,把第三个数按大小插入到有序表中;依次进行下去,进行了(n-1)趟扫描以后就完成了整个排序过程。原创 2017-11-26 17:56:21 · 210 阅读 · 0 评论 -
算法七之希尔排序
一、希尔排序(1)简介 希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因DL.Shell于1959年提出而得名。 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。(2)基本思想原创 2017-11-26 17:56:55 · 196 阅读 · 0 评论 -
算法八之归并排序
一、归并排序原理 归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。 归并过程为:比较a[i]和b[j]的大小,若a[i]≤b[j],则将第一个有序表中的元素a原创 2017-11-26 17:56:57 · 179 阅读 · 0 评论 -
终于,把十大经典排序算法汇总了!(Java实现版)
转载自终于,把十大经典排序算法汇总了!(Java实现版)最近几天在研究排序算法,看了很多博客,发现网上有的文章中对排序算法解释的并不是很透彻,而且有很多代码都是错误的,例如有的文章中在“桶排序”算法中对每个桶进行排序直接使用了Collection.sort()函数,这样虽然能达到效果,但对于算法研究来讲是不可以的。所以我根据这几天看的文章,整理了一个较为完整的排序算法总结,本文中的所有算法...转载 2019-09-01 10:32:07 · 560 阅读 · 0 评论