
数据结构
weidiezeng
android
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
快速排序
一趟快速排序的伪代码是: 1)将i和j指向待划分区间的最左侧和最右侧记录的位置 2)重复下述过程,直到i=j 2.1 右侧扫描,值到记录j的关键码小于轴值记录的关键码; 2.2 如果存在划分区间,则将r[i]与r[j]交换; 2.3 左侧扫描,值到记录i的关键码大于轴值记录的关键码; 2.4 如果存在划分区间,则将r[i]与r[j]交换; 3)退出循环,说明i和j指向了轴值记...原创 2019-07-18 10:24:30 · 120 阅读 · 0 评论 -
堆排序
堆的定义下:具有n个元素的序列 (h1,h2,...,hn),当且仅当满足(hi>=h2i,hi>=h2i+1)或(hi<=h2i,hi<=h2i+1) (i=1,2,...,n/2)时称之为堆(来源百度百科)。在这里只讨论满足前者条件的堆。由堆的定义可以看出,堆顶元素(即第一个元素)必为最大项(大顶堆)。完全二叉树可以很直观地表示堆的结构。堆顶为根,其它为左子树、右子树。...原创 2019-07-17 15:43:33 · 108 阅读 · 0 评论 -
归并排序
归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2-路归并。 基本思路: 把长度为n的输入序列分成两个长度为n/2的子序列; 对这两个子序列分别采用归并排序; 将两个排序好的子序列合并成一...原创 2019-07-17 15:54:07 · 84 阅读 · 0 评论 -
插入排序
基本思路:每步将一个待排序的记录,按其顺序码大小插入到前面已经排序的字序列的合适位置(从后向前找到合适位置后),直到全部插入排序完为止。 Java实现: public class InsertSort { public static void main(String[] args) { // TODO Auto-generated method stub int []n...原创 2019-09-08 11:18:51 · 94 阅读 · 0 评论 -
希尔排序
基本思想:先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行依次直接插入排序。根据需求,如果你想要结果从小到大排列,它会首先将数组进行分组,然后将较小值移到前面,较大值移到后面,最后将整个数组进行插入排序,这样比起一开始就用插入排序减少了数据交换和移动的次数,可以说希尔排序是加强 版的插入排序 拿数组5, 2,8, 9, 1, 3,...原创 2019-09-24 08:59:36 · 128 阅读 · 0 评论 -
冒泡排序与选择排序
冒泡排序基本思想: 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 Java实现: public class BubbleSort { public static ...原创 2019-09-24 08:18:50 · 114 阅读 · 1 评论