判断时用比较(< or >) 替换 比对(==)防止递归越界
来源:互联网 发布:淘宝网新百伦运动鞋 编辑:程序博客网 时间:2024/06/04 23:36
今天,看邓老师的数据结构,尝试写了下快速排序算法。写完之后,调试发现无法跳出递归:
#include <iostream>using namespace std;void swap(int& a, int& b){int temp = a;a = b;b = temp;}void searchfast(int* A, int lo, int hi){if(lo == hi)return;if(lo +1 == hi);{if(A[hi] < A[lo]) swap(A[lo], A[hi]);return ;}int i = 0; int j = 0;swap(A[lo], A[lo + 1]);for(; hi - j > lo + i; ){if (A[hi - j] < A[lo]){i++; swap(A[lo + i], A[hi - j]);}elsej++;}searchfast(A, lo, lo + i);searchfast(A, lo + i + 1, hi);}int main(){int A[10] = { 5,6,1,3,8,9,2,7,0,4};searchfast(A, 0, 9);for(int i = 0; i < 10; i++)cout << A[i] <<endl;return 0;}调试发现,分而治之的递归出现了错误,递归中出现了lo > hi 的情况(好难理解。。。。。),然后把第二个递归基的比对:
if(lo +1 == hi);修改为比较
if(lo + 2 > hi);然后就没问题了。。。。
这得好好分析啊。。。。可以理解比较操作会避免 lo > hi 的情况,但比对操作( == )为啥会产生这种越界呢?0 0
- 判断时用比较(< or >) 替换 比对(==)防止递归越界
- 字符串比对大小(版本号比较)
- 读取边界值时防止越界判断的一个经验
- Objective-c防止数组越界而崩溃(全局效果)
- UIPickview 省市联动注意点(如何防止同时两组或多组滑动时,数组越界问题)
- 递归时要注意数组越界
- 递归实现回文判断(如:abcdedbca就是回文,判断一个面试者对递归理解的简单程序)
- 字符串比对 (strstr)
- 通过费马小定理求组合数(防止越界,因为做除法之前不能够取余)
- 工具类:防止数组越界崩溃问题(NSArray 分类/runtime 用法3:交换方法)
- 防止rect越界
- C语言的越界问题(100+200=44)
- 使用迭代器的错误之一:对迭代器越界值解引用,而且这种情况是发生在判断条件中,比较隐蔽
- Oracle多条件判断比对
- hdu1274 展开字符串(递归or栈)
- UESTC 1307 数位DP (递归 or 非递归)
- NSString的各种用法总结(创建、截取、判断比较、转化数据类型、拼接、替换、添加、追加、读取、写入、删去、改变)
- iOS 防止数组越界 对象类型不一致的安全处理 使用category对nsmutablearray处理
- codeforces 777 B. Game of Credit Cards (排序乱搞)
- String使用方法详解
- Log4net配置与使用简要说明
- 《C++Primer》读书笔记(四)表达式
- Python基础语法——函数(二)
- 判断时用比较(< or >) 替换 比对(==)防止递归越界
- 入门kpi的后台工具类
- 对CSS盒模型的一些理解
- Java的重新学习
- 344. Reverse String
- 文章标题
- VS 2010 MFC 制作的双色球模拟软件 之 dlg.cpp
- C#简单的函数调用
- HDU 5999 The Third Cup is Free