原文:八大排序算法——堆排序(动图演示 思路分析 实例代码java 复杂度分析)

一 动图演示 二 思路分析 先来了解下堆的相关概念:堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆 或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。如下图: 同时,我们对堆中的结点按层进行编号,将这种逻辑结构映射到数组中就是下面这个样子 该数组从逻辑上讲就是一个堆结构,我们用简单的公式来描述一下堆的定义就是: 大顶堆:arr i gt arr i ...

2019-04-20 15:24 0 1480 推荐指数:

查看详情

八大排序算法——快速排序演示 思路分析 实例代码Java 复杂度分析

一、演示 二、思路分析 快速排序的思想就是,选一个数作为基数(这里我选的是第一个数),大于这个基数的放到右边,小于这个基数的放到左边,等于这个基数的数可以放到左边或右边,看自己习惯,这里我是放到了左边, 一趟结束后,将基数放到中间分隔的位置,第二趟将数组从基数的位置分成 ...

Wed Mar 27 03:44:00 CST 2019 3 5416
八大排序算法——归并排序演示 思路分析 实例代码java 复杂度分析

一、演示 二、思路分析 归并排序就是递归得将原始数组递归对半分隔,直到不能再分(只剩下一个元素)后,开始从最小的数组向上归并排序 1. 向上归并排序的时候,需要一个暂存数组用来排序, 2. 将待合并的两个数组,从第一位开始比较,小的放到暂存数组,指针向后移, 3. ...

Wed Mar 27 16:25:00 CST 2019 0 1292
八大排序算法——基数排序演示 思路分析 实例代码java 复杂度分析

一、演 二、思路分析 基数排序第i趟将待排数组里的每个数的i位数放到tempj(j=1-10)队列中,然后再从这十个队列中取出数据,重新放到原数组里,直到i大于待排数的最大位数。 1.数组里的数最大位数是n位,就需要排n趟,例如数组里最大的数是3位数,则需要排3趟。 2. ...

Sat Apr 20 04:22:00 CST 2019 0 1181
八大排序算法——希尔(shell)排序演示 思路分析 实例代码java 复杂度分析

一、演示 二、思路分析 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。   简单插入排序很循规蹈矩,不管数组分布是怎么样的,依然一步一步的对元素 ...

Sat Apr 20 18:39:00 CST 2019 0 1047
八大排序算法——选择排序演示 思路分析 实例代码Java 复杂度分析

一、演示 二、思路分析 1. 第一个跟后面的所有数相比,如果小于(或小于)第一个数的时候,暂存较小数的下标,第一趟结束后,将第一个数,与暂存的那个最小数进行交换,第一个数就是最小(或最大的数) 2. 下标移到第二位,第二个数跟后面的所有数相比,一趟下来,确定第二小 ...

Mon Mar 25 17:29:00 CST 2019 2 1187
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM