#include <iostream>
using namespace std;
int main() //正序
{
int a[]={4,1,2,3,5,9,8,6,5,7};
int len=sizeof(a)/sizeof(a[0]);
cout<<"输入分组间隔:";
int n;
cin>>n;
for(int h=0;h<len;h++){
cout<<a[h]<<" ";
}
cout<<endl;
//预排序
for(int i=0;i<n;i++){
for(int j=i+n;j<len;j=j+n){
for(int t=i;t<j;t=t+n){
if(a[t]>a[j]){
int f=a[t];
a[t]=a[j];
a[j]=f;
}
}
}
}
for(int h=0;h<len;h++){
cout<<a[h]<<" ";
}
cout<<endl;
//直接插入排序
for(int i=1;i<len;i++){
int t=a[i];
for(int j=i;j>0;j--){
if(t<a[j-1]){
a[j]=a[j-1];
a[j-1]=t;
t=a[j-1];
}
}
}
for(int h=0;h<len;h++){
cout<<a[h]<<" ";
}
return 0;
}
希尔-排序
于 2023-10-16 15:02:51 首次发布