#include<iostream>
/**
希尔排序 -- 取n/2作为第一个增量,把数组全部元素分为n/2个组,相距n/2的倍数的元素
分为一组,在各组内进行直接插入排序;取n/2/2作为第二个增量,重复上述分组过程。
**/
int main() {
int arr[10] = {10,9,8,7,6,5,4,3,2,1};
void ShellSort( int array[], int n );
ShellSort(arr,10);
for( int i = 0; i < 10; i++ ) {
std::cout<<arr[i]<<std::endl;
}
return 0;
}
void ShellSort( int array[], int n ) {
int i,j,gap;
int tmp;
gap = n/2;
while( gap > 0 ) {
for( i = gap; i < n; i++ ) {
tmp = array[i];
j = i-gap;
while( j >= 0 && tmp < array[j] ) {
array[j+gap] = array[j];
j = j-gap;
}
array[j+gap] = tmp;
}
gap = gap/2;
}
}
希尔排序
最新推荐文章于 2023-11-28 16:53:17 发布