gpt4 book ai didi

c++ - 数组中的最小差异

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:35:06 27 4
gpt4 key购买 nike

我想找到数组所有元素之间的最小差异。我通读了其他各种问题,但无法在以下代码中找到错误的确切来源。

#include<iostream>
#include<stdio.h>
#include<cstdlib>

using namespace std;

void quicksort(long int *lp, long int *rp);

int main()
{
int t,n;
long int s[5000];

cin>>t;
while(t--){
cin>>n;
for(int i=0;i<n;i++) cin>>s[i];
quicksort(&s[0],&s[n-1]);
//cout<<"passes:"<<passes<<endl;
//for(int i=0;i<n;i++) cout<<s[i]<<" ";
long int min = abs(s[1]-s[0]);
//cout<<endl<<min;
for(int i=1;i<(n-1);i++){
long int temp = abs(s[i]-s[i+1]);
if (temp <= min) min = temp;
}
cout<<min;
}
}

void quicksort(long int *lp,long int *rp){
int arraysize= (rp-lp)+1;
if(arraysize > 1){
long int *pivot = (lp+(arraysize/2));
long int swap=0;
long int *orgl = lp;
long int *orgr = rp;
while(lp!=rp){
while (*lp < *pivot) lp++;
while (*rp > *pivot) rp--;
if (lp == pivot) pivot=rp;
else if (rp == pivot) pivot=lp;
swap = *lp;
*lp = *rp;
*rp = swap;
if((*lp == *pivot) || ( *rp == *pivot)) break;
}
quicksort(orgl,pivot-1);
quicksort(pivot+1,orgr);
}

此链接中给出了问题陈述:http://www.codechef.com/problems/HORSES你能找出我程序中的错误吗?

最佳答案

您使用的是 C++,因此与其使用您自定义的快速排序,这并不能真正保证 O(n*logn),您最好使用从 <algorithm> 开始的排序。 .这个逻辑看起来不错:

    long int min = abs(s[1]-s[0]);
//cout<<endl<<min;
for(int i=1;i<(n-1);i++){
long int temp = abs(s[i]-s[i+1]);
if (temp <= min) min = temp;
}

By the way:
cout<<min;
Add cout<<min << endl;

关于c++ - 数组中的最小差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12505426/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com