假設順序表中的元素遞增有序,設計演算法在順序表中插入元素x,要求插入後仍然保持遞增有序
void list::
insert1
(int x)
data[i +1]
= x;
cout <<
"the value is successful to put in"
<< endl;
}
分析:在第i個位置1插入時需要移動n-i+1個元素,最好的情況下比較1次,移動0次假設順序表a、b分別表示乙個集合,涉及演算法以判斷集合a是否是集合b的子集,若是,返回true,否則返回false,並分析演算法效能
bool
subset
(list a, list b)
if(suc ==
false
)return
false;}
return
true
;}
分析演算法性o(a*b)假設順序表遞增的順序表a、b分別表示乙個集合,涉及演算法以判斷集合a是否是集合b的子集,若是,返回true,否則返回false,並分析演算法效能
bool
subset1
(list a, list b)
else
if(a > b)ib++
;else
return
false;}
if(ia >= a.
length()
)return
true
;else
return
false
;}
分析:ia 和ib分別表示指向a和b的兩個指標,有三種情況涉及演算法將遞增的有序順序表a、b中的元素值合併為乙個遞增有序順序表c,要求時間盡可能的少1.data[ia]==data[ib]——>ia++;ib++
2.data[ia] >data[ib]——>ib++;
3.data[ia] return fasle
演算法效能:o(a+b)
void
merg_list
(list a, list b, list& c)
else
if(a > b)
else
}while
(ia < a.
length()
)while
(ib < b.
length()
)}
分析:盡可能的少,就代表o(a+b)就會用兩個不同的指標ia,ib分別指向a和b,有三種不同的情況
1.data[ia]==data[ib]——>c.insert(ic,a);ic++;c.insert(ic,a);
2.data[ia] >data[ib]——>c.insert(ic,b);ic++;
3.data[ia] c.insert(ic,a);ic++;
最基本的順序表(經典順序表)
順序表.cpp 最基本的順序表 經典順序表 完整的class.list abstract class 線性表的c 抽象類宣告 templateclass list array based list implementation 線性表的實現 template class alist public l...
順序表演算法
順序表演算法 順序表演算法 設順序表 a,元素的個數是 n,沒有重複。如果 a 中前 k 個元 素有序,後 n k 個元素有序,設計乙個演算法使得整個順序表有序,要求演算法的空 間複雜度為 o 1 include include define elemtype int define status i...
順序表經典面試題
標頭檔案如下 include include include ifndef seqlist h define seqlist h 實現順序表的以下介面 typedef int datatype define maxsize 10 typedef struct seqlist seqlist 初始化順...