您的位置:首页 > 其它

线性表学习之顺序表示

2013-10-29 19:28 148 查看

原创博文,转载请注明出处

线性表是一种逻辑结构,表示元素之间一对一的相邻关系。顺序表和链表是指存储结构,两者属于不同层面的概念,因此不要将其混淆。接下来我们学习:

第一部分:线性表的顺序表示

顺序表最主要的特点是可以进行随机存取,即通过首地址和元素序号可以在O(1)的时间内找到指定的元素。顺序表的存储密度高,每个节点只存储数据元素,但是插入和删除需要移动大量元素。

插入、删除、查找的时间复杂度为O(n)

综合应用 :

1、设计一个高效算法,将顺序表的所有元素逆置,要求算法的空间复杂度为O(1).

算法思想:扫描顺序表L的前半部分元素,对于元素L.data[i](0<=i<=L.length/2),将其余后半部分对应元素L.data[L.length-i-1]进行交换。

int M_Search(int A[ ],int B[ ],int n){
int s1=0,d1=n-1,m1,s2=0,d2=n-1,m2;
while(s1!=d1&&s2!=d2){
m1=(s1+d1)/2;
m2=(s2+d2)/2;
if(A[m1]=B[m2])
return A[m1]
if(A[m1]<B[m2]){
if ((s1+d1)/2==0){
s1=m1;
d2=m2;
}
else{
s1=m1+1;
d2=m2;
}
}
else{
if((s1+d1)/2==0){
d1=m1;
s2=m2;
}
else{
d1=m1;
s2=m2+1;
}
}
}
return A[s1]<B[s2]?A[s1]:B[s2];
}


View Code

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: