数据结构
N_Peng
什么时候想好简述再写
展开
-
排序——简单的快速排序流程(带图例演示)
快速排序(Quicksort),又称划分交换排序(partition-exchange sort),简称快排。它的原理和冒泡排序法一样都是用交换的方式,不过他会在数据中找到一个虚拟的中间值,把小于中间值的数据放在左边,把大于中间值的数据放在右边,再以同样的方式分别处理两边的数据,直到完成排序为止。执行流程为:先以第一个值为基准值,设置其索引为par,将这个值放入一个临时变量tmp中,防止在后...原创 2019-08-18 17:56:14 · 10639 阅读 · 1 评论 -
排序——堆排序
堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。堆排序是选择排序的改进版,它可以减少选择排序法中的比较次数,进而减少排序时间。堆积排序用到了二叉树的技巧,它利用堆积数来完成排序。堆积是一种特殊的二叉树,可分为最大堆积树和最小堆积树:最大堆积树满足三个条件:是一个完...原创 2019-08-17 21:06:24 · 560 阅读 · 0 评论 -
排序——希尔(Shell)排序及其与直接插入排序的对比
简介:希尔(Shell)排序法是D.L.Shell在1959年发明的一种排序法,是第⼀个突破O(n2)的排序算法,是简单插⼊排序的改进版,其排序算法类似于简单插入排序,但它可以减少数据搬移的次数。希尔排序⼜叫缩⼩增量排序。排序原则:将数据区分成特定间隔的几个小分块,以插入排序法排完区块内的数据后再逐渐减少间隔的距离。...原创 2019-08-17 18:43:09 · 1163 阅读 · 0 评论 -
排序——插入排序的优化:折半(二分)插入排序
折半插入排序(Binary Insertion Sort),也叫二分插入排序,是直接插入排序的一种改进,关于直接插入排序,可以点击【传送门】排序——直接插入排序查看,这里主要总结一下折半插入排序。折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。以一个大小为n的数组arr为例,折半插入排序的基本思路为:将未排序数组可以看做已排序区间[0,i-1]和未排序区间[i,n-1...原创 2019-08-17 16:47:59 · 426 阅读 · 0 评论 -
排序——直接插入排序
排序方式:通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插⼊排序通常采用in-place在数组上实现,这种方法首先将第一个元素看做已排序区间,从未排序区间依次取出数据从已排序区间末端开始与已排序区间进行对比,将取出的元素插入到合适的位置。例:对{6,4,9,8,3}数组进行排序原始数据:6 4 9 8 3第一次排序后:4 6 9 8 3第二次排序后:4...原创 2019-08-17 15:43:23 · 222 阅读 · 0 评论 -
排序——选择排序
排序方式:每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置若将数据利用选择排序进行由小到大排序,有两种方式:第一种方式是每次扫描将最小值找出来放在第一位。同理也可以每次扫描将做大元素找出来放在最后一个位置。第一种方式的方法为由第一个位置的数据开始,先将第一个位置的数据看做整组数据最小的元素,依次与后面的元素进行比较,若在后面的数据中找到比第一个位置的数据小的,则更新...原创 2019-08-17 12:27:23 · 278 阅读 · 0 评论 -
排序——冒泡排序及其优化
排序方式:由第一个元素开始,比较相邻元素的大小,若大小顺序有误,则对调后再进行下一个元素的比较。如此扫描一次后就可以确保最后一个元素处于正确的顺序。接着再进行第二次扫描,直到完成所有元素的排序关系为止。例:对{6,4,9,8,3}数组进行排序原始数据:6 4 9 8 3第一次扫描后:4 6 8 3 9第二次扫描后:4 6 3 8 9第三次扫描后:4 3 6 8 9第四次扫描后:3 ...原创 2019-08-17 10:55:58 · 197 阅读 · 0 评论 -
数据结构——顺序表
在说顺序表之前,先认识一下线性表(Linear List)。线性表称为有序表(Ordered List),是数学概念应用在计算机科学中一种基本的数据结构。线性表数据元素可以是任何一种类型,不过对于同一线性表的每一个元素都必须属于同一类型。从数据在物理内存存储形式上线性表可以分为: 顺序表和链式表,本文主要做了顺序表相关操作的整理。顺序表:顺序表是在计算机内存中以数组的形式保存的线性表,...原创 2019-08-25 23:03:05 · 612 阅读 · 0 评论 -
常用排序算法总结
排序的分类:根据现有的排序算法来看,排序⼤致分为两类:内部排序:如果整个排序过程不需要借助外部存储器(如磁盘),所有排序操作都在内存中完成,这种排序称之为内部排序。外部排序:如果参与排序的数据元素⾮常多,数据量⾮常⼤,计算机⽆法把整个排序过程放在内存中完成,必须借助外部存储器(如磁盘),这种排序就称之为外部排序。通常说的排序都是指内部排序,⽽不是外部排序。个人总结了一些基本排序算法,...原创 2019-08-19 16:31:45 · 199 阅读 · 0 评论 -
排序——归并排序
归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。原创 2019-08-18 23:22:10 · 328 阅读 · 0 评论 -
排序——快速排序(递归写法/非递归写法)及其优化
快速排序(Quicksort),又称划分交换排序(partition-exchange sort),简称快排。它的原理和冒泡排序法一样都是用交换的方式,不过他会在数据中找到一个虚拟的中间值,把小于中间值的数据放在左边,把大于中间值的数据放在右边,再以同样的方式分别处理两边的数据,直到完成排序为止。执行流程为:递归:先以第一个值为基准值,设置其索引为par,将这个值放入一个临时变量tmp中,...原创 2019-08-18 19:25:53 · 476 阅读 · 0 评论