資料結構_演算法
資料結構演算法的基本知識
演算法一般都可以用遞迴和迴圈兩個辦法來實現
- 遞迴的程式碼較簡潔
- 迴圈的效能較好
要根據題目的特點合理的選擇演算法
二維陣列上搜索路徑
- 一般使用回溯法(backtracking)
- 回溯法一般和遞迴相結合,如果不允許使用遞迴,可以使用棧來實現遞迴的過程
最優解問題
- 這個問題一般是分成多個子問題
- 使用動態規劃來解決問題
- 最好是使用自下而上的迴圈程式碼來實現,先解決小問題,再合併為大問題
- 在分解子問題的時候,存在某個特殊的選擇,選擇這個就一定得到最優解,那個這個問題可能就是貪婪演算法
位運算
- 與,或,非,左移,右移
相關推薦
資料結構_演算法
資料結構演算法的基本知識 演算法一般都可以用遞迴和迴圈兩個辦法來實現 遞迴的程式碼較簡潔 迴圈的效能較好 要根據題目的特點合理的選擇演算法 二維陣列上搜索路徑 一般使用回溯法(backtracking) 回溯法一般和遞迴相結合,如果不允許使用遞迴,可以使用棧來實現遞迴的過程
19_資料結構與演算法_查詢樹_Python實現
#Created By: Chen Da #構造一個樹節點的類 #以此作為BinarySearchTree的引用 class TreeNode(object): def __init__(self,key,value,left=None,right=None,parent=None):
07_資料結構與演算法_棧_Python實現
#Created By: Chen Da """ 棧區 LIFO結構 ADT: method:push、pop """ #先實現一個雙端連結串列 class Node(object): def __init__(self,prev=None,va
11_資料結構與演算法_遞迴_Python實現
#Created By: Chen Da """ 階乘函式就是典型的遞迴: def fact(n): if n == 0: return 1 else: return n * fact(n-1) 遞迴的特點: 遞迴必須包含一個基本的出口(b
10_資料結構與演算法_氣泡排序_Python實現
""" 氣泡排序: 思想: 從列表的開頭處開始,並且比較一對資料項,知道移動到列表的末尾。 每當成對的兩項之間的順序不正確時,演算法就交換其位置。 這個過程的效果就是將最大的項以冒泡的方式排到列表的末尾。 然後,演算法從列表開頭
09_資料結構與演算法_選擇排序_Python實現
""" 選擇排序: 思路: 遍歷整個列表,找到最小項的位置。 如果該位置不是列表的第一個位置,演算法就會交換這兩個位置的項; 然後演算法回到第二個位置並重復這個過程 """ import random #定義一個交換函式 d
08_資料結構與演算法_插入排序_Python實現
""" 插入排序: 其思想類似於手中有一些亂序的撲克牌,要將其整理為有序的。 首先拿第二張,與之前一張對比,小於第一張時交換順序,大於時保持不動。 這樣i輪過後,第i大的牌就會出現在第i個位置。 """ import random def insertion_sort(
13_資料結構與演算法_快速排序_Python實現
#Created By: Chen Da """ 快速排序的思想: 選擇基準值pivot將陣列分成兩個子陣列,小於基準值的元素和大於基準值的元素;這個過程稱為partition 對兩個子陣列進行快速排序; 合併結果。 """ #一個簡單粗暴的遞迴快排 def quik_s
12_資料結構與演算法_歸併排序_Python實現
#Created By: Chen Da #定義一個合併方法,等價於Python內建的sorted def merge_sorted_list(sorted_a,sorted_b): length_a,length_b = len(sorted_a),len(sorted_b) a
17_資料結構與演算法_二叉堆_Python實現
#Created By: Chen Da #先實現一個二叉堆,基於完整二叉樹 class Binary_heap(object): def __init__(self): self.heap_list = [0] #一個空的二叉堆以零作為第一個元素,方
16_資料結構與演算法_遍歷樹(前序、中序、後序)_Python實現
#Created By: Chen Da #定義一個二叉樹的類 class Binary_Tree(object): def __init__(self,root): self.key = root self.left_child = None
15_資料結構與演算法_分析樹_Python實現
#Created By: Chen Da #這裡針對簡單的數學表示式使用分析樹 """ (3+(4*5)) 定義四個規則: 1、如果當前符號是'(',新增一個新節點作為當前節點的左子節點,並下降到左子節點; 2、如果當前符號在列表['+','-','/','*']中,將當前節點的
14_資料結構與演算法_二叉樹_Python實現
#Created By: Chen Da class BinaryTree(object): def __init__(self,rootObj): self.key = rootObj self.left_child = None sel
18_資料結構與演算法_圖(鄰接表)_Python實現
# Title : TODO # Objective : TODO # Created by: Chen Da # Created on: 2018/11/10 #頂點類 class Vertex(object): def __init__(self,key): s
資料結構與演算法_開篇
我決定了,每天的寫作內容就是今天學到了什麼。 很無趣是不是? 因為我終於意識到知識的掌握很大程度上依賴於“是否記住了它”。簡單來說就是記憶。或者說這種簡單的事情我現在還沒有做到,所以我決定每天記錄一下。 你好,歡迎你。 這裡是組蒽,很高興能和你分享
【資料結構與演算法經典問題解析--java語言描述】_第20、21章_學習記錄
【資料結構與演算法經典問題解析--java語言描述】_第20、21章_學習記錄 第20章: 第21章: 1.1 本章主要介紹的是對於面試和考試有用的話題 1.2 位運算的使用 1.2.1 按位與操作
12_資料結構與演算法_合併排序_Python實現
#Created By: Chen Da #定義一個合併方法,等價於Python內建的sorted def merge_sorted_list(sorted_a,sorted_b): length_a,length_b = len(sorted_a),len(sor
【wuzhekai的專欄】演算法分析_資料結構_解題筆記
專欄達人 授予成功建立個人部落格專欄
Python版本的資料結構書_《用Python解決資料結構與演算法問題》
源於經典 資料結構作為計算機從業人員的必備基礎,Java, c 之類的語言有很多這方面的書籍,Python 相對較少, 其中比較著名的一本 problem-solving-with-algorithms-and-data-structure-using-pyt
為什麼我要放棄javaScript資料結構與演算法(第一章)—— JavaScript簡介
資料結構與演算法一直是我算比較薄弱的地方,希望通過閱讀《javaScript資料結構與演算法》可以有所改變,我相信接下來的記錄不單單對於我自己有幫助,也可以幫助到一些這方面的小白,接下來讓我們一起學習。 第一章 JavaScript簡介 眾所周知,JavaScript是一門非常強大的程式語言,不僅可以用於