C 順序表經典演算法

2021-10-08 01:36:22 字數 1694 閱讀 7776

假設順序表中的元素遞增有序,設計演算法在順序表中插入元素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的兩個指標,有三種情況

1.data[ia]==data[ib]——>ia++;ib++

2.data[ia] >data[ib]——>ib++;

3.data[ia] return fasle

演算法效能:o(a+b)

涉及演算法將遞增的有序順序表a、b中的元素值合併為乙個遞增有序順序表c,要求時間盡可能的少

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 初始化順...