数据结构第八章学习心得

本章学习了排序

排序分为内部排序和外部排序

外部排序是指内存无法记录所有待排序的数据,需要对外存进行访问的排序。

1.冒泡排序与快速排序都以交换为基本操作,经过重复的交换实现排序

冒泡排序:重复走访过要排序的元素列,依次比较两个相邻的元素,如果顺序错误就把他们交换过来,重复n-1次,时间复杂度为O(n^2)

快速排序:不断重复分成一半,其中一部分记录的关键字均比另一部分的关键字小,多次重复后可以实现排序,时间复杂度最好情况O(log(2)(n))最坏情况:O(n)

2.插入排序

直接插入排序:简单,略,时间复杂度:O(1)

折半插入排序:在插入到已排序的数据时采用二分查找的方法,进一步简化直接插入,时间复杂度:O(1)

希尔排序:分组使用直接排序,时间复杂度:O(1)

3.选择排序

简单选择排序:选择数据中最大(小)的元素,把他放在第相应的位置,直到最小(大)的元素被放置完成。时间复杂度:O(1)

树形选择排序:原理与简单选择相近,但是利用了二叉树的存储特点,用二叉树的功能实现。

4.堆排序:是一种树形选择排序,采用二叉树的特点,一般用双亲节点大于左子树小于右子树作为前提条件。注意在实践运用时,需要根据题目要求调整是选择最大的元素还是最小的元素,然后再入堆然后出堆。时间复杂度O(1)

5.2-路归并排序:将数据不停二分,分到一定规模时开始组内排序,最后将排序归并在一起。时间复杂度o(n) 此用法大多用于内存无法记录所有待排序的数据,也就是和外部排序相关(内部排序也可以用,但是没必要)

心得:学会了希尔排序和折半插入排序,这章给我的感觉是需要理解思考,理解这些排序的作用,到真正需要使用的时候,反而会不停烦恼到底用哪个比较好,需要多做点编程题进行实践。

想法:这章学的比较虚,知识点好像飘在空中,可能也是考试周太接近的原因,我可能需要在复习的时候好好关注一下七八章的内容。

posted @ 2020-07-12 16:13  1907潘健聪  阅读(208)  评论(0编辑  收藏  举报