diff --git a/.obsidian/plugins/obsidian-jupyter/obsidian-jupyter.py b/.obsidian/plugins/obsidian-jupyter/obsidian-jupyter.py new file mode 100644 index 0000000..84bc008 --- /dev/null +++ b/.obsidian/plugins/obsidian-jupyter/obsidian-jupyter.py @@ -0,0 +1,67 @@ +import argparse +import sys +from jupyter_client import KernelManager +import nbformat +from nbconvert import HTMLExporter +from nbclient import NotebookClient +from nbclient.exceptions import CellExecutionError +import json +import logging + + +# Parse input arguments. +parser = argparse.ArgumentParser() +parser.add_argument('document_id') +args = parser.parse_args() + +# Set up a logger that writes to stderr. +logging.basicConfig(level='INFO') +logger = logging.getLogger('obsidian-jupyter') +logger.info('started server for document %s', args.document_id) + +# Create a notebook and kernel. +cell = nbformat.v4.new_code_cell() +nb = nbformat.v4.new_notebook(cells=[cell]) +km = KernelManager() +client = NotebookClient(nb, km) + +try: + # Respond to each request. + for request in sys.stdin: + # Load the request and generate a response with matching id. + logger.info('received request: %s', request) + request = json.loads(request) + request_body = request['body'] + response = { + 'id': request['id'], + } + # Execute a cell. + if request_body['command'] == 'execute': + cell['source'] = request_body['source'] + try: + nb = client.execute(nb) + except CellExecutionError as ex: + logger.info('cell failed to execute: %s', ex) + html_exporter = HTMLExporter(template_name='basic') + (response_body, resources) = html_exporter.from_notebook_node(nb) + elif request_body['command'] == 'restart_kernel': + km.restart_kernel() + response_body = '' + else: + logger.error('unrecognised command: %s', request_body['command']) + response_body = '' + + # Pass the response back. + response['body'] = response_body + response = json.dumps(response) + sys.stdout.write(response + '\n') + logger.info('sent response: %s', response) + sys.stdout.flush() + sys.stderr.flush() +finally: + # Clean up the kernel. + if km.is_alive: + logger.info('shutting down kernel...') + km.shutdown_kernel() + +logger.info('exiting...') diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index 7f82518..d2c3cbe 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -4,16 +4,16 @@ "type": "split", "children": [ { - "id": "18520963df8aa056", + "id": "9c50b84bb6df2f5e", "type": "tabs", "children": [ { - "id": "de3f9d04c35ed5ff", + "id": "90587f11c8ede650", "type": "leaf", "state": { "type": "markdown", "state": { - "file": "树/树.md", + "file": "2.线性表/ex.md", "mode": "source", "backlinks": true, "source": false @@ -86,9 +86,9 @@ "state": { "type": "backlink", "state": { - "file": "树/树.md", - "collapseAll": true, - "extraContext": true, + "file": "2.线性表/ex.md", + "collapseAll": false, + "extraContext": false, "sortOrder": "alphabetical", "showSearch": false, "searchQuery": "", @@ -103,7 +103,7 @@ "state": { "type": "outgoing-link", "state": { - "file": "树/树.md", + "file": "2.线性表/ex.md", "linksCollapsed": false, "unlinkedCollapsed": true } @@ -126,7 +126,7 @@ "state": { "type": "outline", "state": { - "file": "树/树.md" + "file": "2.线性表/ex.md" } } }, @@ -159,19 +159,24 @@ "templater-obsidian:Templater": false } }, - "active": "de3f9d04c35ed5ff", + "active": "90587f11c8ede650", "lastOpenFiles": [ + "未命名.canvas", + "2.线性表/ex.md", + "2.线性表/线性表.md", + "1.绪论/ex.md", + "树/树.md", + "未命名 1", + "未命名", "树/pic/Pastedimage20230810154259.png", "4.串/串.md", "树/pic/Pastedimage2230810153842.png", - "树/树.md", "树/pic", "树", "3.栈、队列、数组/栈、队列、数组.md", "4.串", "1.绪论/绪论.md", "1.绪论/pic/Pasted image 20230802145127.png", - "2.线性表/线性表.md", "3.栈、队列、数组", "2.线性表/pic/image-2023080216367.png", "2.线性表/pic/image-2023080214616.png", @@ -182,9 +187,6 @@ "2.线性表/code", "线性表/init.c.md", "2.线性表/code/init.c", - "未命名.canvas", - "线性表/Drawing 2023-08-02 15.07.11.excalidraw.md", - "2.线性表", - "1.绪论" + "线性表/Drawing 2023-08-02 15.07.11.excalidraw.md" ] } \ No newline at end of file diff --git a/1.绪论/ex.md b/1.绪论/ex.md new file mode 100644 index 0000000..6529750 --- /dev/null +++ b/1.绪论/ex.md @@ -0,0 +1,29 @@ +1.1.3 +抽象数据类型 +树 +有序表 +栈 +数据的逻辑结构独立于存储结构 +数据关系 +节点内的存储单元一定连续 +不一定不相同,二叉树和二叉排列数, +线性表链式与顺序存储,插入字符, O(1) O(n) + +1.2.3 +算法满足5个条件 +执行时间与 $n^2$ 成正比 +$log_2 N$ +3 开方 n +$n^2$ +n(n+1) X +n +$n log_2 n$ +mn X +n X +n X +$n^ (1/2)$ +n + + + + diff --git a/2.线性表/ex.md b/2.线性表/ex.md new file mode 100644 index 0000000..7ebd293 --- /dev/null +++ b/2.线性表/ex.md @@ -0,0 +1,280 @@ +ls2.1.3 P12 + +1. 数据元素 +2. B +3. 只有一个前驱元素 + +2.2.3 P16 +选择 + +1. A 密度大 +2. 线性表的顺序存储结构是随机存取的存储结构 +3. B 元素的存放顺序 +4. D +5. A +6. I O(1) 、II O(1) 、 III O(n) 、IV O(n) +7. I \ II +8. D n-i+1 XXX n-1 +9. C 1 n +10. C 0<= i <- n-1 XXX B +11. D + 应用 1.找出最小元素,并删除,最后元素补提 + +```c +bool Del_main(SqList &L,ElemType &value) +{ + +if(L.length == 0 ) + return False; + +value = L.data[0]; +int pos = 0; + +for(int i=1; i < L.length; i++) + if{ L.data[i] < value } + { + value = L.data[i]; + pos = i; + } + +L.data[pos] = L.data[L.length - 1]; +L.length--; +return true; + + +} + +``` + +2. + +空间复杂度为 1, 顺序表 L 的所有元素逆置 + +```c +void Changefun(Sqlist &L){ +Eletype temp; +for(int i = 0; i< (L.length/2); i++) +{ + temp = L.data[i]; + L.data[i] = L.data[L.length - i - 1]; + L.data[L.length-i-1 ] = temp; +} + +} + + +``` + +1. L 长度 n ,顺序表 + +``` +viod delX(Sqlist &L, x) +{ + +int k = 0; +for(int i = 0; i= t) + return false; +// 1. 使用删除法 + int k = 0; + for(int i = 0; i t ) + { + L.data[k] = L.data[i]; + k++; + } + L.length = k; + } + +// 2. 使用回流 + int i=0,k=0; + which( i < L.length ) + { + if ( L.data[i] < s && L.data[i] > t ) + k++; + else + L.data[i-k] = L.data[i]; + i++; + } + L.length = L.length - k; + +} + +``` + +5. + +```c + + + +``` + +6. + +```c +bool Delet_Same(Seqlist &L) +{ + if ( L.length == 0 ) + return false; + + int i,j; + for ( i = 0,j=1; j C.length ) + return false; + int i=0,j=0,k=0; + while ( i= right || right >= arraySize ) + return false; + + int mind = (left + right ) / 2; + + for ( int i = 0 ; i< mind - left ; i++) + { + Datatype temp = A[left+i]; + A[Left=i] = A[right-i]; + A[right-i] = temp; + } +} + +Reverse(A,0,m+n-1,arraySize); +Reverse(A,0,m+n-1,arraySize); +Reverse(A,0,m+n-1,arraySize); +``` + +9. + +```c +void SearchExchangeInsert(ElemType A[],ElemType x) +{ + int low=0,high=n-1,mid; + while(low <= high) + { + mid = (low + high)/2; + if (A[mid] == x ) + break; + else if ( A[mid] < x ) + low = mid +1; + else + high = mid -1; + } + if (A[mid] ==x && mid != n-1 ) + { + t = A[mid]; + A[mid] = A[mid+1] + A[mid+1] = t; + } + if (low > high) + { + for (i = n-1 ; i>high;i--) + { + A[i+1] = A[i]; + A[i+x] = x; + } + } + +} +``` + +10. + +```c +void Reverse(int R[], int from,int to) +{ + int i,tmp; + for(i=0;i<(to-from+1)/2;i++) + { + temp = R[from+i]; + R[from+i] = R[to-i]; + R[to-i] = temp; + } +} +void Converse(int R[], int n ,int p ) +{ + Reverse(R,0,p-1); + Reverse(R,p,n-1); + Recerse(R,0,n-1); +} + +``` + +时间 O(n) 空间 O(1) + +11. + +```c + +``` + +2.3.7 + +1. B +2. B +3. C +4. C x D +5. A +6. C +7. B x D +8. A x C +9. C +10.