【数据结构】第8章 排序 12,2,16,30,28,10,16*,20,6,18
【直接插入排序、希尔排序、冒泡排序、快速排序、简单选择排序、树形选择排序、堆排序、归并排序、基数排序】不理解的地方看[这个动画]
·
【直接插入排序、希尔排序、冒泡排序、快速排序、简单选择排序、树形选择排序、堆排序、归并排序、基数排序】
不理解的地方看这个动画
设待排序的关键字序列为{12,2,16,30,28,10,16*,20,6,18},试分别写出使用1~9排序方法,每趟排序结束后关键字序列的状态。
1、直接插入排序(插入)*
把每一个数依次插入一个新数组
2、折半插入排序(插入)
同直接插入排序
3、希尔排序(插入)*
增量递减选取,直到最后一个为1
4、冒泡排序(交换)*
若前面的比后面的数大,交换每相邻的两个
5、快速排序(交换)*
看图:
6、简单选择排序(选择)*
每次挑最小的放到前面
7、树形选择排序(选择)
同简单选择排序
嘤嘤嘤10个的不知道怎么画。。。8个是这样:
8、堆排序(选择)
(1)将序列构建成一个堆,根据需求选择大顶堆或小顶堆(一般升序用大顶堆,降序用小顶堆);
(2)将堆顶元素与末尾元素交换,将最大元素"沉"到数组末端;
(3)重新调整结构,使其满足堆定义,然后继续交换堆顶元素与当前末尾元素,反复执行调整+交换步骤,直到整个序列有序。
图解堆排序
9、归并排序*
每次两块两块的合并
10、基数排序*
3位数比较好演示,换个例子:
更多推荐
所有评论(0)