1 void insertion_sort(int *list, int n) 2 { 3 for(int p = 1; p < n; p++) 4 { 5 int temp = list[p]; //取一張牌 6 int i; 7 for(i = p; i >0 && list[i-1] > temp; i--) 8 { 9 list[i] = list[i-1]; //前面的牌移位 10 } 11 list[i] = temp; //牌落位 12 } 13 }
最近比較閒,複習一下數據結構和算法的內容;網易雲課堂上,浙江大學陳越老師講的很是形象,不少的時候,咱們學習完某個算法或者數據結構,很快就忘記了。其實這不能怪咱們;由於人類的大腦自己就不善於記憶一些抽象的符號,咱們擅長記憶的是結構化的圖形,因此把抽象的東西具象化,這是學習和記憶的關鍵。算法
以前在學習插入排序的時候,大部分看的是大學教科書,寫的晦澀難懂,不少的時候就給你一段代碼,連註釋都不多,學習的時候很枯燥,而且學完一遍很快就忘記了。數據結構
其實插入排序很簡單,拿個類比,就跟咱們打撲克牌同樣,咱們總習慣按照,從小到大的順序從左到右排列,那麼你抽一張新牌的時候若是前面沒有比它大的,就放到最後;若是有比它大的,那麼就插到中間,比它大的那些牌一次後移一個位置。數據結構和算法