算法与数据结构
爽、
业精于勤而荒于嬉,行成于思而毁于随
展开
-
快速排序过程——递归与非递归解法
看了网上很多人的快排,有些核心没讲到,导致我走了弯路。 遍历每一个基准数A的第一次替换绝对是替换A的位置 比A大的甩到右边,比A小的甩到左边 这话怎么理解呢,如果基准数位置的值没被填充,可能会导致数据丢失,在取完前四个基准数时会就会明白了 黄色填充框是待替换区 简单来说,快排是为每一个基准数据找其正确索引位置的过程 给出序列:3 ,44,38,5,47,15,36,26 基准数据...原创 2019-07-04 16:05:10 · 227 阅读 · 0 评论 -
插入排序的几种方式
1.比较完后,统一后移后插入 public static int[] insertSort(int[] arr) { int len = arr.length; for (int i = 1; i < len; i++) {//循环n-1次 for (int j = 0; j < i; j++) {//每次与前面i个元素比较 if (arr[j] > a...原创 2019-07-05 10:57:18 · 623 阅读 · 0 评论 -
堆排序全解析
目录 堆 构造大顶堆 第一种方式 第二种方式 堆排序就是不断抽离堆顶元素(剩余队列中最大者),继续构造大顶堆 非叶子节点有多少个,为什么是N(数组长度)/2 代码 堆排序核心在于构造堆,本文以构造大顶堆为例 堆 说白了就是完全二叉树, 除最后一层外,其余各层都是满的,每层数量为(2^(h-1)) 最后一层必须从左到右依次放置不能留空 构造大顶堆 大顶堆,就...原创 2019-07-11 15:15:04 · 157 阅读 · 0 评论