排序——希爾排序
複雜度
在代碼實現上,把直接插入排序中的增量由1改為d即可
九度oj 1054 字元串內排序 http://ac.jobdu.com/problem.php?pid=1054
#include <stdio.h>#include <string.h>#define MAXN 200char str[MAXN + 10] = "3625174";int d_set[] = {5, 3, 1};int main(){ while( gets(str) ) { int len = strlen(str); for( int t = 0; t < 3; t++ ) { int d = d_set[t]; for( int i = d; i < len; i++ ) { char cur = str[i]; int index = i - d; while( index >= 0 && str[index] > cur ) { str[index + d] = str[index]; index -= d; } str[index + d] = cur; } } printf( "%s
", str ); } return 0;}
推薦閱讀:
※浙江大學-數據結構-選講Huffman Codes-7.4.3
※九章演算法 | Facebook 面試題:等差子序列
※浙江大學-數據結構-歸併排序-9.4.2
※Python數據結構與演算法刷題(1)——害死人不償命的(3n+1)猜想
※浙江大學-數據結構-歸併排序-9.4.3
TAG:數據結構 |