原创 【常用排序算法】以最簡單的方式理解插入排序

思想理解: 插入排序的工作原理非常像抓撲克牌,最開始是一張,大的放後面,小的放前面。 主要要實現的就是插入,時間複雜度是O(1);但是主要費時的就是插入要實現插入位置之後的元素全部往後移動一位,但是如果插入的元素是已有牌裏

原创 【常用排序算法】以最簡單的方式理解快速排序

本小白覺得快速排序是最難理解的排序算法,特別是程序代碼的實現,花了兩個小時終於給看懂了… 思想分析: 首先是設定了一個基準pivot,默認是第一個或者最後一個,(假設是第一個數)然後和後面的數進行比較,要是大於基準,就在原地不變

原创 【軟件工程】數據流圖

1.數據流圖(DFD)的基本成分: a.數據流:由一組固定成分的數據組成,表示數據的流向。 b.加工:描述了輸入數據流到輸出數據流之間的轉換,每個加工都有一個名字和編號,編號能反映該加工位於分層DFD中哪個層次和那張圖中。 c.數

原创 【軟件工程】面向對象之設計模式

一、設計模式的要素 1.模式名稱 2.問題 3.解決方案 4.效果 二、創建型設計模式 1、他們都將關於該系統使用哪些具體的類的信息封裝起來; 2、他們隱藏了這些類的實例是如何被創建和放在一起的; 類:Factory method

原创 【常用排序算法】以最簡單的方式理解冒泡排序

(最近一直在看PHP,加上OJ 404了,所以這兩天都沒有寫C,但是還是有在寫代碼的。) 本人小白,而且腦子笨,理解算法比較困難,現在我把我對排序算法的理解貼出來以便以後複習理解。代碼是其他博客裏偷的,後面標識出處。 1. 冒泡排

原创 【20171010】面向對象分析與設計方法

OOA和OOD 1.面向對象分析 OOA模型由5個層次和5個活動組成: 5個層次:主題層、對象類層、結構層、屬性層和服務層 5個活動:標識對象類、標識結構、定義主題、定義屬性和定義服務 除此之外,OOA還定義了兩種對象類之間的

原创 【20171210】用java實現簡易貪喫蛇

一、各個類之間的關係 之前學軟件工程不努力,現在徒傷悲啊,不會用visio畫類圖…大致的類、方法之間的關係就是這樣。 二、遊戲界面 三、具體實現: 1.遊戲窗口 要考慮的問題有: a.窗口的名字,大小,位置; b.添加的組

原创 【總結帖】關於遞歸

1.什麼是遞歸? 在函數或子過程的內部,直接或者間接地調用自己的算法。 我自己通俗的理解是:要解決當前這個問題,就要先解決另一個問題,顧名思義,先遞後歸。 例如,做一碗麪條,就要先完成放面入鍋的操作,而這個操作的前提又是水燒

原创 【總結帖】C語言實現多輸入輸出

一、已知有n個輸入 #include <stdio.h> int main(int argc, char* argv[]) { int n,i; printf("請輸入將要輸入的數字個數:"); scan

原创 關於eclipse啓動出錯以及code:blocks無法運行的問題

最近國慶出去玩帶電腦沒帶充電器,然鵝沒有帶充電器…於是被迫在我媽的電腦上裝eclipse和code:blocks寫程序… 果然雖然已經安裝過n次的東西,最後還是會出各種各樣的錯誤… 一:最開始,安裝code:b

原创 【20171002】Java每日一練

【插播】已知年月日求星期(1900年之後) 代碼實現1: package c2; import java.util.Scanner; public class C2_03 { public static void

原创 【20171009】C語言每日一練

【程序19】 題目:一個數如果恰好等於它的因子之和,這個數就稱爲“完數”。例如6=1+2+3. 編程找出1000以內的所有完數。 #include <stdio.h> int main(int argc, char* arg

原创 【20171015】C語言每日一練

【程序31】 題目:請輸入星期幾的第一個字母來判斷一下是星期幾,如果第一個字母一樣,則繼續判斷第二個字母。 #include <stdio.h> int main(int argc, char* argv[]) { c

原创 【20171009】Java名詞理解

一:方法 Java方法是語句的集合,它們在一起執行一個功能 方法是解決一類問題的步驟的有序組合 方法包含於類或對象中 方法在程序中被創建,在其他地方被引用 方法調用有兩種方法:1.傳值調用;2.語句調用。 當方法返回一個值

原创 【總結帖】求1-100以內的素數的方法

1.最普通的兩次for循環 #include <stdio.h> #include <math.h> int main(int argc, char* argv[]) { int i,j; for(i = 2;i