資料結構 演算法入門

2021-08-19 18:21:20 字數 3401 閱讀 3500

公司的核心價值點起始與資料,資料可以預判趨勢,指導方向,解決實際問題,掌握了公司的資料,就掌握了公司運營和發展的命脈

是做技術的基礎中的基礎,是高技術人才的必備能力

裝逼利器

物理形式

邏輯形式

舉例子:天天生鮮中的,商品資訊,使用者資訊這些資料,有各自的組織方式,儲存起來,單個的資料是沒有意義的,將它們放在需求場景中–開發乙個可以訪問的,可以購買東西的** 。資料就有了意義,處理這些資料完成一些功能,如將資料儲存到fastdfs中的思路和方法就是演算法。

為什麼引入抽象資料型別的概念

關係:資料結構+演算法==程式,程式+語言==程式設計

抽象資料結構: 資料場景化

**實現:

演算法1

import 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')

結果:

演算法2

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的時間複雜度:t(n)

1= n

^3演算法

2的時間複雜度:t(n)

2= n^2n

^2^3演算法

2的時間複雜度更低一點,則演算法

2的效率高一點

**1:

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)

測試示例

**:

import 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

列表拼接:list1 + list2

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

列表推導式:[i for i in 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

列表屬性轉換:list(range())

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...