首页 > 代码库 > 希尔排序
希尔排序
希尔排序
基本思想:先将整个待排序列分割成若干子序列分别进行直接插入排序,待整个序列中的记录基本有序时,再对全体记录进行一次直接插入排序。
代码实现:
#include<stdio.h> #include<iostream> using namespace std; int n; void ShellInsert(int a[],int k) { int i,j; for(i=k+1;i<=n;i++) //增量为k,跳跃式移动 { if(a[i]<a[i-k]) { a[0]=a[i]; for(j=i-k;j>0&&a[0]<a[j];j-=k) a[j+k]=a[j]; a[j+k]=a[0]; } } } void ShellSort(int a[],int b[],int t) { int i; for(i=1;i<=t;i++) ShellInsert(a,b[i]); } int main () { int a[100],b[10],i; cin>>n; for(i=1;i<=n;i++) cin>>a[i]; for(i=1;i<=n;i++) cin>>b[i]; // 增量数组 ShellSort(a,b,n); for(i=1;i<=n;i++) cout<<a[i]<<" "; return 0; }
希尔排序
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。