例項功能:接收乙個含有整數元素的陣列和乙個包含元素個數的整數,將陣列中的元素從小到大重新排序。並輸出排序前後的陣列。
下面以模組劃分的思想來實現此功能。
列印陣列元素模組:
/*common.h
*/#ifndef _common_h
#define _common_h
void print_array(const
int array, int
n);#endif
/*希爾排序模組:common.c
*/#include
"common.h
"#include
void
print_array(
int array, int
n)
/*shell_sort.h
*/#ifndef _shell_sort_h
#define _shell_sort_h
void shell_sort(int array, int
n);#endif
/*主函式:shell_sort.c
*/#include
"shell_sort.h
"void
shell_sort(
int array, int
n) array[j] =tmp;}}
}
/*makefile檔案:shell_sort_test.c
*/#include
#include
"shell_sort.h
"#include
"common.h
"int
main(
void);
printf(
"before sorted:");
print_array(array, 6);
shell_sort(array, 6);
printf(
"after sorted :");
print_array(array, 6);
return0;
}
/*測試過程:makefile
*/target :=sort_test
objs :=shell_sort_test.o shell_sort.o common.o
$(target):$(objs)
gcc -o $@ $^
%.o:%.c
gcc -c -o $@ $
rm *.o sort_test
C用語言排序演算法 希爾排序(例項)
希爾排序 在直接插入排序的思想下設定乙個最小增量dk,剛開始dk設定為n 2。進行插入排序,隨後再讓dk dk 2,再進行插入排序,直到dk為1時完成最後一次插入排序,此時陣列完成排序。include 進行插入排序 初始時從dk開始增長,每次比較步長為dk void insrtsort int a,...
排序 希爾排序
希爾排序 shell sort 又稱為縮小增量排序,輸入插入排序演算法,是對直接排序演算法的一種改進。本文介紹希爾排序演算法。對於插入排序演算法來說,如果原來的資料就是有序的,那麼資料就不需要移動,而插入排序演算法的效率主要消耗在資料的移動中。因此可知 如果資料的本身就是有序的或者本身基本有序,那麼...
排序 希爾排序
縮小增量排序 待排序列按關鍵字基本有序時,直接插入排序的效率很高 希爾排序思想 將整個待排記錄分割為若干子串行分別進行直接插入排序,待整個序列中的記錄基本有序時,再對全體記錄進行一次直接插入排序,就可以完成整個排序工作 增量序列中的值沒有除1以外的公因子,且最後乙個增量必須等於1 子串行的構成不是逐...