在不使用STL的情况下为上下限找到合适的C代码很麻烦

在不使用STL的情况下为上下限找到合适的C代码很麻烦,c,C,我知道这不是一个好问题。但我尽了最大的努力,在不使用STL的情况下,为上下限找到了一些好的C代码。但是我找不到合适的。请为我提供这两个问题的正确代码,并为提出此类问题表示歉意。更新以获得回复 我希望这能奏效。其中A是排序数组,我们查找的是值K int UpperBound(int A[],int N,int K){ int low , high , mid ; low = 1 ; high = N ; while(low <= high){

我知道这不是一个好问题。但我尽了最大的努力,在不使用STL的情况下,为上下限找到了一些好的C代码。但是我找不到合适的。请为我提供这两个问题的正确代码,并为提出此类问题表示歉意。

更新以获得回复 我希望这能奏效。其中A是排序数组,我们查找的是值K

int UpperBound(int A[],int N,int K){
    int low , high , mid ;
    low = 1 ;
    high = N ;
    while(low <= high){
        mid = ( low + high ) / 2 ; // finding middle element 
        if(A[mid] > K && ( mid == 1 || A[mid-1] <= K )) // checking conditions for upperbound
            return mid ;
        else if(A[mid] > K) // answer should be in left part 
            high = mid - 1 ;
        else                // answer should in right part if it exists
            low = mid + 1 ;
    }
    return mid ; // this will execute when there is no element in the given array which > K
}


int LowerBound(int A[],int N,int K){
    int low , high , mid ;
    low = 1 ;
    high = N ;
    while(low <= high){
        mid = ( low + high ) / 2 ; // finding middle element 
        if(A[mid] >= K && ( mid == 1 || A[mid-1] < K )) // checking conditions for lowerbound
            return mid ;
        else if(A[mid] >= K) // answer should be in left part 
            high = mid - 1 ;
        else                // answer should in right part if it exists
            low = mid + 1 ;
    }
    return mid ; // this will execute when there is no element in the given array which >= K
}

什么??STL的上限是现在最过时的C++库。所以无论你做什么,在C语言中你永远不会直接使用STL。请花点时间阅读,尤其是命名为和的部分。也可以采取,阅读,以及。最后,学习如何创建一个.c,或者你想要一个C或C++的答案?不要混淆C和C++。它们是两种截然不同的语言。对于searchValue=1,它给出了:上界索引=2,下界索引=0。这会造成混淆,因为对于1,上界和下界应该是index=1。在哪里做代码更改?非常好,我已经编辑了我的代码。请检查此项。变量上限已声明,但从未初始化为已知值,因此访问内容未定义。我认为上限也应初始化为-1,因为arr[]={0,2,3,4,5}和searchValue=6。在本例中,不存在6的上限,但代码返回了错误的下限和上限的索引0。但是这里6个没有上限和下限。是的,很好。