希尔排序

来源:互联网 发布:iphone6网络不稳定手动 编辑:程序博客网 时间:2024/06/16 13:21
#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;}}

0 0