摘要: 希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序,同时该算法是冲破O(n2)的第一批算法之一。本文会以图解的方式详细介绍希尔排序的基本思想及其代码实现。 基本思想 希尔排序是把记录按 阅读全文
posted @ 2017-11-07 23:59 涛声依旧~ 阅读(451) 评论(0) 推荐(0) 编辑
摘要: 预备知识 堆排序 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。首先简单了解下堆结构。 堆 堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于 阅读全文
posted @ 2017-11-07 23:56 涛声依旧~ 阅读(357) 评论(0) 推荐(0) 编辑
摘要: 先定义个交换数组元素的函数,供排序时调用 简单选择排序(O(n^2)) 简单选择排序是最简单直观的一种算法。 基本思想:每一趟从待排序的数据元素中选择最小(或最大)的一个元素作为首元素,直到所有元素排完为止,简单选择排序是不稳定排序。 在算法实现时,每一趟确定最小元素的时候会通过不断地比较交换来使得 阅读全文
posted @ 2017-11-07 23:43 涛声依旧~ 阅读(6294) 评论(0) 推荐(0) 编辑
摘要: 排序分类: 外排序:需要在内外存之间多次交换数据 内排序: 插入类排序 直接插入排序 希尔排序 选择类排序 简单选择排序 堆排序 交换类排序 冒泡排序 快速排序 归并排序 归并排序 插入类排序 直接插入排序 希尔排序 选择类排序 简单选择排序 堆排序 交换类排序 冒泡排序 快速排序 归并排序 归并排 阅读全文
posted @ 2017-11-07 18:47 涛声依旧~ 阅读(3135) 评论(0) 推荐(1) 编辑
摘要: Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST. 题意:给定一个有序的单向链表,将其转换成平衡的二叉搜索树。 思路:二分法+快慢指 阅读全文
posted @ 2017-11-07 11:13 涛声依旧~ 阅读(157) 评论(0) 推荐(0) 编辑