有序的线性表是不是顺序存储结构??二分法查找的存储结构仅限于线性表且是有序的这句话对不对?
有序的线性表是顺序存储结构。二分法查找的存储结构仅限于线性表且是有序的这句话是对的。
线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素。
顺序存储结构需要三个属性:
存储空间的起始位置:数组data,它的存储位置就是存储空间的存储位置。
线性表的最大存储容置:数组长度MaxSize。
线性表的当前长度:length。
二分法查找针对的是一个有序的数据集合,每次通过与区间的中间元素对比,将待查找的区间缩小为之前的一半,直到找到要查找的元素,或者区间被缩小为0
二分查找非常高效,假设数据大小是n,每次查找后数据都会缩小为原来的一半,也就是会除以2,最坏情况下,直到查找区间被缩小为空,才停止。
扩展资料
二分法查找和普通查找的区别:
普通查找:对于数组和一个需要查找的元素来说,普通查找的原理很简单,即为从数组的第一个元素到最后一个元素进行遍历,如果第i个元素的值等于我们需要查找的值,那么返回找到的角标i,否则返回-1表示没有查找到。
二分法是从中间元素开始查找,假设整型数组为arr,要查找的元素为value,数组中间元素为arr[mid],若value小于arr[mid],则在左半边继续查找;若value大于arr[mid],则在右半边继续查找,如此循环,知道value等于arr[mid],返回的角标mid即为要找的元素的位置。
二分法查找和普通查找的优缺点分析
普通查找
优点:1)原理简单,代码容易实现。
2)不需要数组有序;
缺点:当元素个数很多时,效率较低。
二分法查找:
优点:效率比普通查找高;
缺点:要求数组必须是有序排列。
线性表是顺序存储结构。二分法是一种跳跃查找方法,如果无序,那么会遗漏数据。
解释一下吧
线性表不管有序无序,在分配时是一次性分配的,在内存中占用的都是连续的存储空间;但线性链表因为是动态分配的内存,元素之间通过指针关联,所以线性链表不一定是顺序存储。二分查找也适用于有序链表