以PHP學習《演算法導論》 插入排序

2021-04-23 22:19:11 字數 950 閱讀 3227

開篇

學計算機的好像都要學演算法與資料結構,在演算法書裡面《演算法導論》 應該算是經典之作了。我希望能在2023年好好的拜讀這本書,當然他太厚了,也許需要更長的時間去揣摩。如同武功秘籍,需要些悟性,還需要平時上手練一練,比劃比劃。

php是我目前吃飯用的傢伙,所以用php這件兵器來修煉《演算法導論》這部秘笈,以希望自己的內力可以有所提高。

如果各位前輩,發現我出了什麼錯誤,那麼請在鄙視和嗤笑過後直接指出我的錯誤。感激不盡。

插入排序——insertion-sort

演算法導論的第二章開篇詳細介紹了插入排序的原理。php的實現如下:

/*** insertion-sort

** @param array $a

* @return array

*/function insertionsort($a=array())

$a[$i+1] = $key;

} return  $a; }

在2.1節後面的練習題裡2.1-2要求重寫插入排序以非遞增的順序排序。照葫蘆畫瓢:

/*** sort into nonincreasing

** @param array $a

* @return array

*/function  insertionsortdesc( $a = array ())

$a [ $i +1] =  $key ;

} return

$a ; }

當然在函式之後最好能進行一下測試,沒那麼嚴格,大概是個意思吧:

function  test()

test();

把測試檔案和上面兩個函式放到一起,跑一下吧~乙個公升序乙個降序。

祝看到帖子的人元旦快樂~!

演算法導論 插入排序

introduction to algorithms second edition chapter2,insertion sort date 2014 9 14 include include include define max 50 typedef struct sortarr 直接插入排序 i...

演算法導論 插入排序

插入排序應該算是比較好理解的一種了,原理類似於我們打牌的時候,摸牌插入手中的情景。來看一下圖,立刻就明白了 我們將乙個陣列int a 12 看做一副撲克牌,假設陣列有12個數,那麼撲克牌也一共有十二張,放在一起開始 我們先抽一張拿到手上,這時候,我們不需要排序,因為不論哪一張先被我們抽上來,不論大小...

演算法導論 插入排序

對於只有乙個元素的陣列,本身為已序。對於兩個元素的a,認為 a0 為已序,a1為key 若key a0 則將key 放到a0後。若不是,後移a0 對於多個元素的陣列 考慮將key 插入到已序的 a0 aj a0 a1 a2.中,可以將key 與aj a0 逐個比較,並後移,直到遇到乙個比key 小的...