Assignment思路

問題: 在給定的文本中找出100個最常出現的單詞
1.如何找單詞,如何界定單詞(一般最小單位爲字符): 有空格間隔的是單詞
2.如何對單詞數量進行排序 如何統計各個單詞出現頻率

如何存儲整個本書(單詞極多)
1.定義一個結構體word,表示一個單詞 (char w[20]—存儲單詞, int frequency –記錄出現的頻率)

2.打開文件,讀取文件並存儲整個文件(定義新的數組,基本元素爲結構體word)

思路:
程序就是數據結構+算法,要解決這個問題,我們得找到適用的數據結構以及一個好的算法。

  1. 定義一個合適的數據結構(由需求定義邏輯結構): 核心爲 存儲字符串, 存儲字符串出現的次數
    在這裏插入圖片描述
    2.定義存儲結構(用線性表還是用樹):

字典 key爲單詞 value爲單詞出現的次數
利用一個字典來保存所有字典,value來保存每個單詞的次數,當字典中沒有該單詞時,執行新增操作;若已經有該單詞則執行更新操作,最後返回次數最多的單詞即可。空間複雜度N 時間複雜度平均爲N

大體思路: 數據結構+算法是程序員的基本方法論
1.將單詞存入結構體數組(即構建數據結構並將數據存入數據結構中) – 再拆分: 1.打開文件 2.完整輸出文本 3.開始存入
2.統計單詞的頻率
3.根據頻率進行堆排序(對text[i].frequency 進行堆排序)

細節:
1.內存分配 Max_size =20w內存無法分配這麼大的連續存儲空間 =1w, 讀不完給定的文本 =5w,終於能運行起來了
2.步步爲營: 每步皆可見(先實現能打開文件,完整輸出文本 print)
3.if條件考慮不周全: 有幾種情況- 1.字母,
在這裏插入圖片描述
2.其他字符(考慮不周全了)-再拆分: 需要再細分 -對if的理解:分類討論思想:1.分類要全面,詳細。 2.分類條件要寫對

字母 – 存儲入字符數組
非字母 – 結束字符數組(\n),並

對if, else if的理解:
必須包含所有情況(不處理也是一種情況)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章