利用哨兵简化编程的一个小栗子
2020-01-13 12:16
375 查看
// 在数组 a 中,查找 key,返回 key 所在的位置 // 其中,n 表示数组 a 的长度 // 我举 2 个例子,你可以拿例子走一下代码 // a = {4, 2, 3, 5, 9, 6} n=6 key = 7 // a = {4, 2, 3, 5, 9, 6} n=6 key = 6 int find(char* a, int n, char key) { if(a == null || n <= 0) { return -1; } // 这里因为要将 a[n-1] 的值替换成 key,所以要特殊处理这个值 if (a[n-1] == key) { return n-1; } // 把 a[n-1] 的值临时保存在变量 tmp 中,以便之后恢复。tmp=6。 // 之所以这样做的目的是:希望 find() 代码不要改变 a 数组中的内容 char tmp = a[n-1]; // 把 key 的值放到 a[n-1] 中,此时 a = {4, 2, 3, 5, 9, 7} a[n-1] = key; int i = 0; // while 循环比起代码一,少了 i<n 这个比较操作 while (a[i] != key) { ++i; } // 恢复 a[n-1] 原来的值, 此时 a= {4, 2, 3, 5, 9, 6} a[n-1] = tmp; if (i == n-1) { // 如果 i == n-1 说明,在 0...n-2 之间都没有 key,所以返回 -1 return -1; } else { // 否则,返回 i,就是等于 key 值的元素的下标 return i; } }
把数组最后一个值存一下,并替换成key。这样遍历数组时就少了一个比较的过程:while(i<n)
现在只需要:
while (a[i] != key) { ++i; }
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
题 外
如何锻炼写链表能力?886有空的时候多实现几次就行了
练习题LeetCode对应编号:206,141,21,19,876。
转载于:https://www.cnblogs.com/kazama/p/9951514.html
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 创建一个Rectangle类,添加width和height两个成员变量。 2.在Rectangle中添加两种方法分别计算矩形的周长和面积 3.编程利用Rectangle输出一个矩形的周
- 利用MYSQL的C API编程,如何确定一个数据库/表是否存在???
- Revit中Dynamo编程——在Python中怎么利用RevitAPI来写一个过滤
- 1.创建一个Rectangle类,添加width和height两个成员变量。 2.在Rectangle中添加两种方法分别计算矩形的周长和面积 3.编程利用Rectangle输出一个矩形的周
- 90页第三题,创建一个 Rectangle类,添加width和lenght两个成员变量 在 Rectangle类中添加两种方法分别计算矩形的周长和面积 ,编程利用Rectangle输出一个矩形的
- 利用C语言编程:有一个分数序列 2/1+3/2+5/3+8/5+13/8+...,求此序列前N项和的简单解法,
- 利用Swift实现一个响应式编程库
- Android利用网络编程HttpClient批量上传(一个)
- bash编程 将一个目录里所有文件存为一个array 并分割为三等分——利用bash array切片
- 创建一个 Rectangle类,添加width和lenght两个成员变量 在 Rectangle类中添加两种方法分别计算矩形的周长和面积 编程利用Rectangle输出一个矩形的周长和面积
- 利用C#进行Socket通信编程之二:一个实例
- 利用Hibernate自定义UserType简化编程
- 1.创建一个Rectangle类,添加width和height两个成员变量。 2.在Rectangle中添加两种方法分别计算矩形的周长和面积 3.编程利用Rectangle输出一个矩形的周
- 1.创建一个Rectangle类,添加width和height两个成员变量。 2.在Rectangle中添加两种方法分别计算矩形的周长和面积 3.编程利用Rectangle输出一个矩形的周
- 【转载】:Autolisp:利用AuoCAD之Lisp编程案例之智能加工齿轮的演示程序-----一个处女座程序猿
- 如何写一个RPC框架(二):利用Bean容器和动态代理简化客户端代码
- 利用Python和win32编程范例——按需定制一个按键精灵
- 1.创建一个Rectangle类,添加width和height两个成员变量。 2.在Rectangle中添加两种方法分别计算矩形的周长和面积 3.编程利用Rectangle输出一个矩形的周
- 1.创建一个Rectangle类,添加width和height两个成员变量。 2.在Rectangle中添加两种方法分别计算矩形的周长和面积 3.编程利用Rectangle输出一个矩形的周
- 利用SDL编程做一个简单的动画;