You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用首尾指针实现判断浮点数组升序的isSorted函数

实现isSorted函数判断浮点数组升序排列

需求:实现isSorted函数,判断浮点数组是否按升序排列,是则返回true。调用时pBegin指向数组首元素,pEnd指向数组最后一个元素的下一个位置(从main函数的调用逻辑可明确此规则)。

原代码存在数组越界问题:循环条件i < size会导致当i等于size-1时,访问pBegin[i+1]超出数组合法范围。以下是修正后的完整代码:

#include <iostream>
#include <string>
#include <iomanip>
using namespace std;

bool isSorted(double *pBegin, double *pEnd){
    int size = pEnd - pBegin;
    // 遍历到倒数第二个元素即可,避免访问越界内存
    for(int i = 0; i < size - 1; i++){
        // 若当前元素大于下一个元素,说明数组非升序
        if(pBegin[i] > pBegin[i+1]){
            cout << "false" << endl;
            return false;
        }
    }
    cout << "true" << endl;
    return true;
}

// 请勿修改以下内容!
int main(){
    int size=3;
    double arr[]={-1.2 , 8.3 , 8.4};
    isSorted(&arr[0],&arr[3]);
    return 0;
}

关键修改点:

  • 删除了无意义的sum变量
  • 将循环条件从i < size调整为i < size - 1,确保遍历过程中不会访问数组边界外的内存
  • 保留核心判断逻辑:只要发现前一个元素大于后一个元素,立即返回false;遍历完成后确认数组升序,返回true

内容的提问来源于stack exchange,提问作者Mattias

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 14:15:53