使用首尾指针实现判断浮点数组升序的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
相关产品推荐
相关产品推荐

