您的位置:首页 > 其它

希尔排序

2015-11-05 09:41 232 查看
// 希尔排序,插入排序的升级版
void XiEr(int* arr ,int length){
int i,j,increment,flag;
increment = length;
do{
// 跳跃分割的策略:减少待排序记录的个数
increment = increment/3+1;
for( i=increment+1 ; i<length ; i++){
// 这里是 i-increment,并且是小于号才是从小到大的排序,详细过程见草稿
if(arr[i]flag && j>=0 ; j-=increment)
arr[j+increment] = arr[j];
arr[j+increment] = flag;
}
}
}while(increment>1);

for(i=0;i<length;i++){
cout<<arr[i]<<" ";
}
}

int main(int argc,constchar * argv[]) {
int arr[] = {9,6,5,7,11,34,2,8,1,10};
int length =sizeof(arr)/sizeof(*arr);

XiEr(arr,length);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: