MOOC 聽課筆記 資料結構

2021-08-19 02:02:07 字數 2426 閱讀 3809

最大子列和問題:kn

​1​​

n​2​

​n​k

​​n​

i​​n

​i+1

​​n​

j​​1

≤i≤j

≤k幾種不同時間複雜度的解法:

1.o(n^3) 暴搜

int maxsub1(int a,int n)

} return maxsum;

}

2.o(n^2) 有技巧的暴搜

int maxsub2(int a,int n)		}

return maxsum;

}

3.o(n*logn) 分治

int max3( int a, int b, int c )

int divideandconquer( int list, int left, int right )

/* 下面是"分"的過程 */

center = ( left + right ) / 2; /* 找到中分點 */

/* 遞迴求得兩邊子列的最大和 */

maxleftsum = divideandconquer( list, left, center );

maxrightsum = divideandconquer( list, center+1, right );

/* 下面求跨分界線的最大子列和 */

maxleftbordersum = 0; leftbordersum = 0;

for( i=center; i>=left; i-- ) /* 左邊掃瞄結束 */

maxrightbordersum = 0; rightbordersum = 0;

for( i=center+1; i<=right; i++ ) /* 右邊掃瞄結束 */

/* 下面返回"治"的結果 */

return max3( maxleftsum, maxrightsum, maxleftbordersum + maxrightbordersum );}

int maxsubseqsum3( int list, int n )

int maxsub3(int a,int n)

return maxsum;

}

線性表(順序表)的定義與操作:

typedef int position;

typedef struct lnode *list;

struct lnode ;

/* 初始化 */

list makeempty()

/* 查詢 */

#define error -1

position find( list l, elementtype x )

/* 插入 */

bool insert( list l, elementtype x, position p )

if ( p<0 || p>l->last+1 )

for( i=l->last; i>=p; i-- )

l->data[i+1] = l->data[i]; /* 將位置p及以後的元素順序向後移動 */

l->data[p] = x; /* 新元素插入 */

l->last++; /* last仍指向最後元素 */

return true; }

/* 刪除 */

bool delete( list l, position p )

for( i=p+1; i<=l->last; i++ )

l->data[i-1] = l->data[i]; /* 將位置p+1及以後的元素順序向前移動 */

l->last--; /* last仍指向最後元素 */

return true;

}

線性表(鏈式表)的定義與操作

typedef struct lnode *ptrtolnode;

struct lnode ;

typedef ptrtolnode position;

typedef ptrtolnode list;

/* 查詢 */

#define error null

position find( list l, elementtype x )

/* 帶頭結點的插入 */

bool insert( list l, elementtype x, position p )

else }

/* 帶頭結點的刪除 */

bool delete( list l, position p )

else

}

筆記 資料結構

解釋經典例題 計算給定多項式在給定點x處的值。f x a0 a1 x a n 1 x n 1 a n x n 方法一 double num int n,double array,double x 改進方法 double num int n,double array,double x clock 捕捉...

mooc資料結構筆記(題來自mooc)

6 2 順序表操作集 20 分 本題要求實現順序表的操作集。list makeempty position find list l,elementtype x bool insert list l,elementtype x,position p bool delete list l,positio...

記資料結構MOOC 二叉樹

在本章中,主要學習了二叉樹的實現以及各種遍歷的方法。著重介紹了前序 中序 後序三種遍歷方法的遞迴實現,同時也描述了前序中序遍歷的迭代方法。教材是以哈夫曼編碼樹為主要脈絡,進行介紹的。這部分還未看完。感覺這章還偏基礎,簡單一些。更多的是講述一些遍歷這種基礎操作。可能需要結合後面的二叉搜尋樹和高階搜尋樹...