插入排序

 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 }

    最近比較閒,複習一下數據結構和算法的內容;網易雲課堂上,浙江大學陳越老師講的很是形象,不少的時候,咱們學習完某個算法或者數據結構,很快就忘記了。其實這不能怪咱們;由於人類的大腦自己就不善於記憶一些抽象的符號,咱們擅長記憶的是結構化的圖形,因此把抽象的東西具象化,這是學習和記憶的關鍵。算法

    以前在學習插入排序的時候,大部分看的是大學教科書,寫的晦澀難懂,不少的時候就給你一段代碼,連註釋都不多,學習的時候很枯燥,而且學完一遍很快就忘記了。數據結構

  其實插入排序很簡單,拿個類比,就跟咱們打撲克牌同樣,咱們總習慣按照,從小到大的順序從左到右排列,那麼你抽一張新牌的時候若是前面沒有比它大的,就放到最後;若是有比它大的,那麼就插到中間,比它大的那些牌一次後移一個位置。數據結構和算法

相關文章
相關標籤/搜索