希尔排序
来源:互联网 发布:怎么做社交软件 编辑:程序博客网 时间:2024/05/16 06:00
#include<cstdio>void ShellSort(int a[], int n){ int d, j, x, i; d = n/2; while(d>=1) //循环至增量为1时结束 { for(i = d; i < n; i++) { x = a[i]; //获取序列中的下一个数据 j = i-d; //序列中前一个数据的序号 while(j >= 0 && a[j]> x) //下一个数大于前一个数 { a[j+d] = a[j]; //将后一个数向前移动 j = j - d; //修改序号,继续向前比较 } a[j+d] = x; //保存数据 } d/=2; //缩小增量 }}void printNum(int arr[], int n){ for(int i = 0; i <= n; i++) { printf("%3d", arr[i]); }}int main(){ int arr[] = {10, 5, 6, 29, 30, 18, 39, 40, 3, 4, 8, 2}; ShellSort(arr, 12); printNum(arr, 11); return 0;}
0 0