我烂了,求助
查看原帖
我烂了,求助
155289
Nomad_joe楼主2023/7/22 15:24
#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了 求大佬帮忙看看哪里出错了

谢谢谢谢

我感恩戴德

2023/7/22 15:24
加载中...