公司的核心價值點起始與資料,資料可以預判趨勢,指導方向,解決實際問題,掌握了公司的資料,就掌握了公司運營和發展的命脈
是做技術的基礎中的基礎,是高技術人才的必備能力
裝逼利器
物理形式
邏輯形式
舉例子:天天生鮮中的,商品資訊,使用者資訊這些資料,有各自的組織方式,儲存起來,單個的資料是沒有意義的,將它們放在需求場景中–開發乙個可以訪問的,可以購買東西的** 。資料就有了意義,處理這些資料完成一些功能,如將資料儲存到fastdfs中的思路和方法就是演算法。
為什麼引入抽象資料型別的概念
關係:資料結構+演算法==程式,程式+語言==程式設計
抽象資料結構: 資料場景化
**實現:
演算法1
演算法2import time
start_time = time.time()
fora
in range(1001):
for b in range(1001):
for c in range(1001):
ifa+b+c==1000
anda**2+b**2==c**2:
print("滿足條件的a,b,c=%d,%d,%d" % (a,b,c))
end_time = time.time()
time_cost = end_time-start_time
print('演算法1消耗的時間為:%f'%time_cost)
print('complete')
結果:
演算法複雜度import time
# 猜兩個數字
start_time = time.time()
fora
in range(1001):
for b in range(1001):
c = 1000-a-b
ifa**2+b**2==c**2:
print("滿足條件的a,b,c=%d,%d,%d" % (a, b, c))
end_time = time.time()
time_cost = end_time-start_time
print('演算法2消耗的時間為:%f'%time_cost)
print('complete')
結果:滿足條件的a,b,c=0,500,500
滿足條件的a,b,c=200,375,425
滿足條件的a,b,c=375,200,425
滿足條件的a,b,c=500,0,500
演算法2消耗的時間為:1.842306
complete
數學表達方式
時間複雜度的分類
基本計算規則
順序結構
迴圈結構
分支結構
**1:演算法
1的時間複雜度:t(n)
1= n
^3演算法
2的時間複雜度:t(n)
2= n^2n
^2^3演算法
2的時間複雜度更低一點,則演算法
2的效率高一點
class timeit.timer(stmt='pass', setup='pass', timer=)
**2:
timeit.time.timeit(number=10000)
示例:time1 = timeit.time("fun1", "from __main__ import func1")
timeit.timer.timeit(number=10000)
測試示例
**:
列表拼接:list1 + list2import timeit
deft1
(): li =
for i in range(1000):
timer1 = timeit.timer("t1()","from __main__ import t1")
print("內建屬性: %f seconds" % timer1.timeit(number=1000))
內建屬性: 0.234965 seconds
列表推導式:[i for i in range()]import timeit
deft2
(): li =
for i in range(1000):
li = li + [i]
timer2 = timeit.timer("t2()","from __main__ import t2")
print("列表拼接: %f seconds" % timer2.timeit(number=1000))
列表拼接: 4.817975 seconds
列表屬性轉換:list(range())import timeit
deft3
(): li = [i for i in range(1000)]
timer3 = timeit.timer("t3()","from __main__ import t3")
print("列表推導: %f seconds" % timer3.timeit(number=1000))
列表推導: 0.085915 seconds
鍊錶 元素外接import timeit
deft4
(): list=list(range(1000))
timer3 = timeit.timer("t4()", "from __main__ import t4")
print("列表屬性:%f second"%timer3.timeit(1000))
屬性轉換: 0.042624 seconds
基本布局
元素外接
因為順序表有兩種表現形式,所以有兩種結構
一體式結構
分離式結構
內容更改
分離式:
空間擴容
線性增長
倍數增長 特點
順序表常見操作 增
刪
資料結構 演算法入門
演算法 algorithm 就是解決特定問題求解步驟的描述,在計算機中表現為指令的有限序列,並且每條指令表示乙個或者多個操作。資料結構與演算法的關係 單獨學習資料結構,不能理解資料結構有什麼用處。演算法的特性 輸入和輸出 零個或多個輸入,乙個或多個輸出 有窮性,確定性,可行性 演算法設計的要求 正確...
資料結構與演算法入門 資料結構型別
資料的邏輯結構 資料的邏輯結構指資料元素之間的邏輯哦關係 和實現無關 分類一 線性結構和非線性結構 線性結構 有且只有乙個開始結點和乙個終端節點,並且所有節點都最多只有乙個直接前繼和乙個直接後繼。線性表就是乙個典型的線性結構,它有四個基本特徵 1.集合中必存在唯一的乙個 第乙個元素 2.集合中必存在...
資料結構演算法 入門(一)
1.array 陣列 2.stack queue 堆 佇列 3.priorityqueue heap 優先佇列 堆 4.linkedlist single double 列表 5.tree binary tree 樹 二叉樹 6.binary search tree 二叉搜尋樹 7.hashtabl...