蒟蒻求助:希尔排序全RE
查看原帖
蒟蒻求助:希尔排序全RE
738230
chenmo2008楼主2023/9/3 16:28

代码如下,5个测试点都提示RE

#include<iostream>
#include<cstring>
using namespace std;
const int MAXN = 10000005;
long long int ns[MAXN],gap[40];
void swap(int &a,int &b){
	int temp = a;
	a = b;
	b = temp;
}
int main(){
	memset(ns,0,sizeof(ns));
	gap[0] = 1;
	for(int i = 1;i < 40;i++){
		gap[i] = gap[i-1] * 2 + 1;
	}
	int n;
	cin >> n;
	for(int i = 0;i < n;i++){
		cin >> ns[i];
	}
	for(int x = n;x >= 0;x--){
		if(gap[x] > n){
			continue;
		}
		for(int p = 0;p < gap[x];p++){
			for(int i = p;i < n;i += gap[x]){
				int t = 114514;
				int px = -1;
				for(int j = i;j < n;j += gap[x]){
					if(t > ns[j]){
						t = ns[j];
						px = j;
					}
				}
				swap(ns[px],ns[i]);
			}
		}
	}
	for(int i = 0;i < n-1;i++){
		cout << ns[i] << ' ';
	}
	cout << ns[n-1] << endl;
	return 0;
}
2023/9/3 16:28
加载中...