李竹君 2011211964 0401115班 函數
1.使用C語言。 性能
2.總體思路:首先將一篇文章分詞,分詞的方法是將逐字符的判斷一篇文章,若是該字符的ASCII碼在「A~Z」或「a~z」之間(區分大小寫),則該字符屬於一個單詞的一部分,若是該字符不在「A~Z」或者「a~z」,則該字符爲兩個單詞之間的分隔符(多個標點或者空格相連的狀況下在3.講)。將分隔下來的單詞和該單詞的長度存入結構體,將全部結構體構成鏈表,將表頭的單詞與除表頭外的全部單詞進行比較,若是出現一個單詞和原節點單詞相等,則將該節點刪掉,以此類推,直到最後一個節點,記錄相等節點數目,並存入該節點結構體,而後再將表頭的下一個節點單詞與該節點的後續節點比較,以此類推,直到全部節點都比較完畢。再對全部鏈表節點內的相等節點數目進行升序排序,取前十位,則獲得結果。 優化
3.具體實現細節:1)多個標點或空格:在造成鏈表的過程當中,若出現多個標點或空格,則判斷該節點內的單詞是否爲'\0',若爲'\0',則原文中此處出現多個標點或空格相連。將該節點刪去便可。2) 將節點的單詞長度記錄下來是爲了在比較過程當中提升效率,即單詞長度不等則單詞確定不等。 spa
4.採用「選擇排序」。 排序
5.原文檔303kb. 文檔
6.運行結果: 性能分析
7.性能分析: 效率
能夠看到,總共程序運行1.6s,在單獨工做的函數中,除主函數外,pre_sort()是佔用時間百分比最多的,在pre_sort中,主要實現的是對於單詞鏈表的處理,即便鏈表節點的單詞不重複,並記錄該單詞出現的次數,其次是sort(),該函數主要是節點頻數進行排序,若是要優化過程的話,能夠從對排序進行優化,當單詞數目較多時,改用快速排序,能夠下降運行時間,優化代碼。 原理
8.心得:寫完程序以後,我感受技術性的工做就比如變魔術,其實原理是很是簡單的,甚至能夠說簡單的好笑,可是當你就是作出這麼一個簡單的東西出來以後,一些外行們有時候會用崇拜的眼光看着你,以爲你很厲害,很高深莫測。可是製做的過程他們殊不知道,也許知道以後他們只是會啞然失笑,原來這個東西的製做過程是如此的簡單。這個能夠說就是技術的魅力了。 程序