* @date 2017/7/22 * @license Mozilla * ------------------------------------------------------------- * æè·¯åæï¼å¸å°æåºæ¯åºäºæå ¥æåºçï¼åºå«å¨äºæå ¥æåºæ¯ç¸é»çä¸ä¸ªä¸ªæ¯è¾ï¼ç±»ä¼¼äºå¸å°ä¸h=1çæ å½¢ï¼ï¼èå¸å°æåºæ¯è·ç¦»hçæ¯è¾åæ¿æ¢ã * ------------------------------------------------------------- * å¸å°æåºä¸ä¸ä¸ªå¸¸æ°å ånï¼åæ°ç»è¢«åæå个å°ç»ï¼æ¯ä¸ªå°ç»ç±h个å ç´ ç»æï¼å¾å¯è½ä¼æå¤ä½çå ç´ ã * å½ç¶æ¯æ¬¡å¾ªç¯çæ¶åï¼h乿¯éåçï¼h=h/nï¼ãç¬¬ä¸æ¬¡å¾ªç¯å°±æ¯ä»ä¸æ 为hå¼å§ãå¸å°æåºçä¸ä¸ªææ³å°±æ¯ï¼åæå°ç»å»æåºã */ /** * @param array $container * @return array */ function ShellSort( array $container ) { $count = count($container); for ( $increment = intval($count / 2); $increment > 0; $increment = intval($increment / 2) ) { for ( $i = $increment; $i < $count; $i++ ) { $temp = $container[$i]; for ( $j = $i; $j >= $increment; $j -= $increment ) { if ( $temp < $container[$j - $increment] ) { $container[$j] = $container[$j - $increment]; } else { break; } } $container[$j] = $temp; } } return $container; } var_dump( ShellSort([6,13,21,99,18,2,25,33,19,84]));