#include<cstdio>
#include<iostream>
#include<string.h>
using namespace std;
int n , sub[100009] ;
int main() {
memset( sub , -0x7f , sizeof sub );
scanf("%d", &n) ;
for( int i = 1 ; i <= n ; ++ i ) {
scanf("%d", &sub[i] );
}
for( int gap = n/2 ; gap >= 1 ; gap /= 2 ) {
for( int i = gap ; i <= n ; ++ i ) {
int mark = sub[i] , step ;
for( int j = i-gap ; j >=0 ; j -= gap ) {
if( sub[j] <= mark ) {
step = j ;
break;
}
if( sub[j] > mark ) {
sub[j+gap] = sub[j];
}
}
sub[step+gap] = mark ;
}
}
for( int i = 1 ; i < n ; ++ i )
printf("%d ", sub[i] );
printf("%d\n", sub[n] );
}
用的希尔排序,知道第四个数据点会超时
但第一二个数据点WA了 求大佬帮忙看看哪里出错了
谢谢谢谢
我感恩戴德