数据结构——排序
Ekyy
这个作者很懒,什么都没留下…
展开
-
考研数据结构——排序(三)直接插入排序、折半插入排序、希尔排序、二路归并排序
直接插入排序(升序)理解:从左到右扫描,每趟将一个待排序的关键字按照其值的大小插入到已经拍好的部分有序序列的适当位置上。获得待插入的数字后,和有序序列从右到左比较,直到找到一个比它小的关键字然后插入在这个关键字后面。如果没有比它小的,则插入在最前面。插入排序特点:一趟排序后并不能保证有一个关键字到达最终的位置。折半插入排序(升序)理解:使用折半查找法来找插入位置。与直接插入排序的外在差别只有查找插入位置的方法不同。希尔排序(升序)理解:通过不同的增量使序列基本有序后,最后通过增量1进行一次原创 2020-09-09 16:18:08 · 325 阅读 · 0 评论 -
考研数据结构——排序(二)堆排序、简单选择排序、基数排序
堆排序(升序)建堆:将序列调整为一个大顶堆(每个节点都要满足父亲大孩子小)(1)先把序列按照完全二叉树的排列方法写出来。(2)从下往上、从左往右找到第一个非叶子结点开始,进行堆调整。如果父结点大于子结点,则不用调整;如果父结点小于子结点,则把父结点和子结点中较大的一个交换。如果交换后,下层不满足父大子小的条件需要再调整下面的节点。(3)一趟调整完后根结点将是最大的数,删除根结点,将其他结点重新调整为大顶堆。#删除结点:把最底层最右边的叶子的值赋给删掉结点后的那个孔,然后调整。#插入结点:把新结原创 2020-09-09 15:33:03 · 162 阅读 · 0 评论 -
考研数据结构——排序(一)冒泡排序和快速排序
冒泡排序(升序)**理解:**第一个关键字和第二个比较,如果第一个大,则交换,否则不交换;第二个关键字和第三个比较,如果第二个大,则交换,否则不交换……每一趟结束后都会有一个最大的关键字沉到最后面,下一趟比较中待排序列的数量减少1。**结束条件:**在一趟排序过程中没有发生关键字交换。/* 冒泡排序 */void BubbleSort(int a[], int n){ int i,j,temp; for (i = n - 1; i >= 1; i--) {原创 2020-09-09 14:28:36 · 411 阅读 · 0 评论