《資料結構與演算法》學習筆記之往線性表中插入資料

2021-09-25 07:22:56 字數 1464 閱讀 6190

接下來我們將定義乙個類,該類為遊戲儲存高分(一般預設為前十名)

首先我們建立乙個儲存分數以及其對應的姓名的類gamescore,然後建立該類的物件新增進儲存高分的類scoreboard中,注意該類的add方法,當儲存的條目數還不足10個的時候,我們將新分數與之前的分數相比,然後插入到合適的名次位置,當儲存的條目數超過10時,將新分數與最後一名對比,若更高則將其插入到合適的名次位置,否則不插入。

class gamescore():

def __init__(self, score, name):

self._score = score

self._name = name

def get_score(self):

return self._score

def get_name(self):

return self._name

def __str__(self):

return '(, )'.format(self._name, self._score)

class scoreboard():

def __init__(self, capacity=10):

self._board = [0] * capacity

self._n = 0

def __getitem__(self, item):

return self._board[item]

def __len__(self):

return self._n

def __str__(self):

return '\n'join(str(self._board[j]) for j in range(self._n))

def add(self, entry):

score = entry.get_score()

if self._n < len(self._board) or score > self._board[-1].get_score():

if self._n < len(self._board):

self._n += 1

j = self._n - 1

while j > 0 and score > self._board[j-1].get_score():

self._board[j] = self._board[j-1]

j -= 1

self._board[j] = entry

if __name__ == '__main__':

sb = scoreboard()

for i in range(13):

gs = gamescore(i, 'lulu')

sb.add(gs)

gs = gamescore(20, 'lili')

sb.add(gs)

for j in sb:

print(j)

資料結構與演算法學習筆記

演算法基礎篇 第一章 演算法概述 首先了解一下基本的概念 1.1 什麼是演算法呢?從字面意義上理解,演算法就是用於計算的方法,用這種方法達到預期的結果。通俗的講,演算法可以理解為乙個完整的解題步驟,由一些基本的運算和規定的運算順序組成。通過這樣的解題步驟可以解決特定的問題。演算法可以抽象出5個特徵 ...

資料結構與演算法學習之演算法入門筆記

關於計算 物件 規律 技巧。目標 高效 低耗。computer science computing science演算法 特定計算模型下,旨在解決特定問題的指令序列。輸入 輸出 正確性 確定性 可行性 有窮性。hailstone序列目前無法證明有窮性或無窮性。程式 不等於 演算法 死迴圈 有窮性 好...

資料結構與演算法學習筆記 線性表(1)

2.1線性表的定義和基本操作 線性表是一種典型的線性結構。線性表 linear list 是由n n 0 個資料元素 結點 a1,a2,an組成的有限序列。所有節點具有相同的資料型別。資料元素的個數n稱為線性表的長度。若線性表中的結點是按值由小到大 或大到小 排列的,稱線性表是有序的。線性表是一種相...