数据结构与算法之初体验(二)算法图解部分

     承接上篇博客数据结构与算法之初体验(一),本篇博客主要总结一些与数据结构有关的算法知识。

    下面是结构图:

     

数据结构与算法之初体验(二)算法图解部分_第1张图片

 

 导航列表(单击名称跳转到指定算法)

     

一、【排序算法】

1、简单排序

①选择排序

②直接插入排序

③冒泡排序

2、希尔排序

3、快速排序

4、堆排序

5、归并排序

6、基数排序

二、【查找算法】

1、顺序查找

2、二分查找

3、分块查找

 

 

选择排序

 数据结构与算法之初体验(二)算法图解部分_第2张图片

直接插入排序

数据结构与算法之初体验(二)算法图解部分_第3张图片

 

 

 

冒泡排序

数据结构与算法之初体验(二)算法图解部分_第4张图片

希尔排序

数据结构与算法之初体验(二)算法图解部分_第5张图片

快速排序

          对冒泡排序的一种本质的改进。通过一趟扫视后,使待排序序列的长度能大幅度的减少。在一趟扫视后,使某个结点移到中间的正确位置,并使在它左边序列的结点的键值都比它的小,而它右边序列的结点的键值都不比它的小。称这样一次扫视为“划分”。每次划分使一个长序列变成两个新的较小子序列,对这两个小的子序列分别作同样的划分,直至新的子序列的长度为1使才不再划分。当所有子序列长度都为1时,序列已是排好序的了。

数据结构与算法之初体验(二)算法图解部分_第6张图片数据结构与算法之初体验(二)算法图解部分_第7张图片

 

堆排序

               一种树形选择排序,是对直接选择排序的有效改进。一个堆是这样一棵顺序存储的二叉树,它的所有父结点(e[i])的键值均不小于它的左子结点(e[2*i+1])和右子结点

(e[2*i+2])的键值。初始时,若把待排序序列的n个结点看作是一棵顺序存储的二叉树,调整它们的存储顺序,使之成为一个堆,这时堆的根结点键值是最大者。然后将根结点与堆的最后一个结点交换,并对少了一个结点后的n-1结点重新作调整,使之再次成为堆。这样,在根结点得到结点序列键值次最大值。依次类推,直到只有两个结点的堆,并对它们作交换,最后得到有序的n个结点序列。

数据结构与算法之初体验(二)算法图解部分_第8张图片

数据结构与算法之初体验(二)算法图解部分_第9张图片

归并排序

        将两个或两个以上的有序子表合并成一个新的有序表。对于两个有序子表合并一个有序表的两路合并排序来说,初始时,把含n个结点的待排序序列看作有n个长度都为1的有序子表所组成,将它们依次两两合并得到长度为2的若干有序子表,再对它们作两两合并……直到得到长度为n的有序表,排序即告完成。

数据结构与算法之初体验(二)算法图解部分_第10张图片

基数排序

数据结构与算法之初体验(二)算法图解部分_第11张图片

顺序查找

顺序查找就是从表的一端,按顺序比对当前节点与关键字是否相等的一个查找方式。

 

二分查找

要求必须是有序序列,小于中间元素就向左查找,大于中间元素就向右寻找。

分块查找

         分块查找的过程分两步,先用二分法在索引表中查索引项,确定要查的结点在哪一块。然后,再在相应块内顺序查找。

 

数据结构与算法之初体验(二)算法图解部分_第12张图片

 

 数据结构与算法之初体验(二)算法图解部分_第13张图片

 

 

你可能感兴趣的:(数据结构与算法之初体验(二)算法图解部分)