给出一个数据序列,使用希尔排序算法进行降序排序。
间隔gap使用序列长度循环除2直到1
标签:name cst for 间隔 oid using 提示 style space
给出一个数据序列,使用希尔排序算法进行降序排序。
间隔gap使用序列长度循环除2直到1
第一行输入t,表示有t个测试示例
第二行输入n,表示第一个示例有n个数据(n>1)
第三行输入n个数据,都是正整数,数据之间用空格隔开
以此类推
对每组测试数据,输出每趟排序结果。不同组测试数据间用空行分隔。
#include<iostream> #include<cstring> using namespace std; #define INF 0x7f int n; int array[INF]; void printarray() { for(int i=0;i<n;i++) { if(i!=n-1) cout<<array[i]<<" "; else cout<<array[i]<<endl; } } void Shellsort() { int i,j,gap; int temp; for(gap=n/2;gap>0;gap/=2) { for(i=gap;i<n;i++) { temp=array[i]; for(j=i;j>=gap&&array[j-gap]<temp;j-=gap) { array[j]=array[j-gap]; } array[j]=temp; } printarray(); } } int main() { int T; cin>>T; while(T--) { cin>>n; memset(array,0,sizeof(array)); for(int i=0;i<n;i++) cin>>array[i]; Shellsort(); cout<<endl; } return 0; } //完全仿照直插排序,把1改成gap
标签:name cst for 间隔 oid using 提示 style space
原文地址:https://www.cnblogs.com/SZU-DS-wys/p/12183079.html