我們如何把現實中大量而且非常複雜的問題以特定的資料型別(個體)和特定的儲存結構(個體的關係)儲存到相應的主儲存器(記憶體)中,以及在此基礎上為實現某個功能而執行的相應操作,這個相應的操作也叫做演算法。
資料結構 == 個體 + 個體關係
演算法 == 對儲存資料的操作
資料結構是軟體中最核心的課程。
程式 = 資料的儲存 + 資料的操作 + 可以被計算機執行的語言。
常見的排序
比較通俗的講,把所有的節點用一根線串起來的結構就稱之為線性結構。線性結構分為兩種方式:陣列、鍊錶。
陣列需要一塊連續的記憶體空間來儲存,堆記憶體的要求比較高。如果我們申請乙個100m大小的陣列,當記憶體中沒有連續的、足夠大的空間時,即使記憶體的剩餘可用空間大於100m,任然會申請失敗。而鍊錶恰恰相反,它並不需要一塊連續的記憶體空間,他通過「指標」將一組零散的記憶體塊串聯起來使用,所以申請的是大小是100m的鍊錶,name根本不會有問題。
陣列,在python語言中成為列表,是一種基本的資料結構型別。
列表的優缺點
缺點:鍊錶的定義
鍊錶的優缺點
缺點:鍊錶的及誒單結構如下:
python語言實現單鏈表的增刪查
在python語言中用物件導向組合的方式,代替指標指向,更加的方便,簡單,容易理解。
# use the linked list sort liangshan po 108 heroes
#class hero():
def __init__(self, no=none, name=none, nick_name=none, next=none):
self.no = no
self.name = name
self.nick_name = nick_name
self.next = next
def add_hero(head, hero):
current_position = head
while current_position.next and hero.no > current_position.next.no:
current_position = current_position.next
hero.next = current_position.next
current_position.next = hero
def get_all(head):
current_position = head
while current_position.next:
print("編號:%s,姓名:%s,外號:%s" % (
current_position.next.no, current_position.next.name, current_position.next.nick_name))
current_position = current_position.next
def delete_hero(head, hero):
current_position = head
if current_position.next:
while current_position.next and current_position.next.no < hero.no:
current_position = current_position.next
current_position.next = current_position.next.next
else:
print("鍊錶為空")
head = hero()
hero = hero(1, '宋江', '及時雨')
# hero1 = hero(2, '盧俊義', '玉麒麟')
# hero2 = hero(3, '吳用', '智多星')
# hero3 = hero(5, '林沖', '豹子頭')
# hero4 = hero(4, '公孫勝', '入雲龍')
# add_hero(head, hero)
# add_hero(head, hero1)
# add_hero(head, hero2)
# add_hero(head, hero3)
# add_hero(head, hero4)
# get_all(head)
print("---------------------")
delete_hero(head, hero)
get_all(head)
資料結構與演算法 演算法 演算法和資料結構
資料結構與演算法 演算法 好吧,在這裡,您被優秀或優秀的軟體開發人員所隔開。在這種情況下,我會告訴您一開始或至少在我的情況下,並且我知道大多數時候,對於我認識的大多數人,您會覺得自己是乙個無能的人或白痴。基本上,我怎麼可能不理解這一點,然後您會感到沮喪。在這種情況下,我會告訴您情況並不像您想的那麼糟...
資料結構 資料結構與演算法01
1 求一組整數中的最大值。演算法 基本操作是 比較兩個數的大小 模型 仔細想想 你並不知道這個整數到底是多大?整數過大你該怎麼去表示?2 足協的資料庫管理的程式 演算法 需要管理的專案?如何管理?使用者介面?模型 3 資料與資料結構 資料 所有能被輸入到計算機中,並被計算機處理的符號的集合計算機操作...
資料結構 資料結構與演算法02
1 演算法設計的原則 設計演算法時,通常應考慮達到以下目標 1,正確性 2,可讀性 3,健壯性 4,高效率與低儲存量需求 1,正確性 規格說明 四個層次 a,程式中不含語法錯誤 b,程式對於幾組輸入資料能夠得出滿足要求的結果 c,程式對精心選擇的 典型 苛刻切帶有刁難性的幾組輸入資料能夠得出滿足要求...