数据结构与算法

数据结构

结构,简单的理解就是关系。数据结构,是相互之间存在某种特定关系的数据元素的集合。从不同的视角,数据结构有逻辑结构和物理结构之分。

逻辑结构是数据元素的组织形式,如集合、线性、树、图。

物理结构是数据元素的存储形式,如顺序存储、链式存储。

顺序表和链表的比较

顺序表的存储空间是静态分配的,链表既可静态也可动态分配。

顺序表的存储空间的利用率是100%,而链表的是50%。

顺序表查找速度快,链表插入和删除速度快。

算法

算法就是解决问题的方法或步骤的描述。数据结构+算法=程序。

好的算法的衡量标准有:正确、易读、健壮、高效率、低存储。

快速排序

快速排序体现的是分治算法思路。从数列中挑出一个元素作为基准,遍历所有元素比基准值小的摆放在基准前面,比基准值大的摆在基准的后面,相同的数可以到任一边,这是一次分区,然后递归地把小于基准值元素的子数列和大于基准值元素的子数列用同样的方式进行排序。

冒泡排序

从头开始比较相邻的两个元素,如果第一个比第二个大,就交换位置,最大的元素就像气泡一样浮现到队尾;然后数组长度每递减一次,重复一次刚才的算法。

选择排序

遍历候选数组将其中最小的元素提到队首,然后起始游标加一,重复刚才的算法。

插入排序

比较相邻的两个元素,将较小的放到前面,然后从候选数组中顺序的取一个元素,插入到刚才的有序数组的合适的位置。

归并排序

二分查找

    在数组中查找一个数最基本的方法是顺序遍历,时间复杂度是O(N),二分查找也叫折半查找,是在顺序查找基础上的一种优化,时间复杂度是O(logN)。具体做法是把数组先排好序,然后直接去看中间值,如果相等就停止查找,如果大于中间值就到后半部继续找,如果小于中间值就到前半部继续找,直到找到为止。 

数据结构与算法_第1张图片

分块查找

    分块查找又叫索引顺序查找,它也是顺序查找基础上的优化算法,它适合与数据量较大的情况。

基本思想是:先将查找表分为若干子块,所有这些块分块有序,即后一块中所有元素的关键码均大于前一块中所有元素的关键码,即快间有序;而每个块内的元素可以是无序的。然后要为这些块建立一个索引表。索引表中的每个元素均含有各块的最大关键字max_key,以及该块在数据表中的起始位置,也就是各块中第一个元素的地址。

数据结构与算法_第2张图片

树表查找

深度搜索就是前序遍历,广度搜索就是逐层遍历。

深度搜索:45,12,3,37,24,53,99,61,90,78

广度搜索:45,12,53,3,37,99,24,61,90,

数据结构与算法_第3张图片

散列表查找

散列查找需要在记录的关键字与存储位置之间建立一个确定的对应关系,即基于关键值进行某种运算,求出元素的地址,从而直接定位查找。

 

全文搜索

你可能感兴趣的:(算法,数据结构)