#include #include typedef struct base_insert_node ;
typedef struct base_insert_list;
void init( base_insert_list * , int * , int );
void print_base_insert_list( base_insert_list * );
void base_insert_sort( base_insert_list * );
void binary_insert_sort( base_insert_list * );
void shell_insert_sort( base_insert_list * );
int main ()
; int len = sizeof(arr)/sizeof(int);
base_insert_list bil;
init(&bil , arr , len);
//base_insert_sort(&bil);
//binary_insert_sort(&bil);
shell_insert_sort(&bil);
print_base_insert_list(&bil);
getchar();
}void init(base_insert_list *bil , int *arr , int len)
void print_base_insert_list( base_insert_list *bil )
void base_insert_sort( base_insert_list *bil )
} }}void binary_insert_sort( base_insert_list *bil )
if((bil->bins + i - 1 )->v > (bil->bins + i)->v && (bil->bins + i)->v > (bil->bins + mid)->v)
else if((bil->bins + mid )->v > (bil->bins + i)->v) }}
void shell_insert_sort( base_insert_list *bil )
; int i ;
for (i = 0 ; i < sizeof(p)/sizeof(int) ; i++ )
}} }
}
插入排序 希爾插入排序
本文借鑑於lsgo實驗室創始人馬老師 演算法 希爾插入排序 delta len nums 2 while delta 0 shell delta,nums delta delta 2return nums defshell delta,key for i in range delta,len key...
插入排序 希爾排序
我們知道當乙個序列基本有序時,直接插入會變得很高效。因為此時只需少量的移動元素,操作集中在元素的比較上。基於這種想法,我們就試圖把乙個序列在進行直接插入前調整得盡量有序。這就是希爾排序 shell sort 的核心思路。shell只是演算法發明者的名字,無特殊含義 那到底該怎麼做呢?希爾排序一反以前...
插入排序 希爾排序
希爾排序 先將整個待排序的記錄序列分割成為若干子串行分別進行直接插入排序,待整個序列中的記錄 基本有序 時,再對全體記錄進行依次直接插入排序。以n 10的乙個陣列49,38,65,97,26,13,27,49,55,4為例 第一次 gap 10 2 5 4938 6597 2613 2749554 ...