希爾排序例項

2021-09-06 14:55:55 字數 1485 閱讀 7749

例項功能:接收乙個含有整數元素的陣列和乙個包含元素個數的整數,將陣列中的元素從小到大重新排序。並輸出排序前後的陣列。

下面以模組劃分的思想來實現此功能。

列印陣列元素模組:

/*

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;}}

}

主函式:

/*

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檔案:

/*

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 子串行的構成不是逐...