C语言学习_三分查找

三分查找:

#include <stdio.h>

#define M 10

int main(void)

{

int front, near, mid1, mid2;

int n;

int found;

int a[M] = {1, 2, 3, 4, 5, 6, 7, 8, 9};

front = 0;

near = M - 1;

found = 0;

printf("input n:");

scanf("%d", &n);

while(front <= near)

{

mid1 = (near - front) / 3 + front;

mid2 = near - (near - front) / 3;

if(n == a[mid1] || n == a[mid2])

{

found = 1;

break;

}

else if(n < a[mid1])

near = mid1 - 1;

else if(n < a[mid1] && n > a[mid2])

{

front = mid1 + 1;

near = mid2 - 1;

}

else

front = mid2 + 1;

}

if(found = 1 && n == a[mid1])

printf("%d %d", n, mid1);

if(found = 1 && n == a[mid2])

printf("%d %d", n, mid2);

return 0;

}

在我现在认识的层面中,三分查找和二分查找的思想是一样的,只是比二分查找多了两个变量,在看博客时,有一位大哥是这么写的:

二分是把区间分为长度相等的两段,三分则是把区间分为长度相等的三段,进行查找,这样的查找称为三分查找,三分查找通

常用来迅速确定最值。

众所周知,二分算法的要求是搜索的序列是单调序列,而三分法所面向的搜索序列的要求是:序列为一个凸性函数。

我看了不是十分理解,鄙人数学不是很好,但是能写出代码还算是可以滴,分享出来,留的以后慢慢研究。

C语言学习_三分查找

时间: 2024-10-24 21:29:35

C语言学习_三分查找的相关文章

C语言学习_排序_插入排序

1.插入排序 #include <stdio.h> #include <stdlib.h> #define M 100 int main(void) { int i, j, n; int a[M] = {0}; printf("input n:"); scanf("%d", &n); printf("input a:"); for(i = 1; i <= n; i++) //从a[1]开始,也就是第二个数 s

C语言学习_数组与指针2

数组其实是一种变相的指针,数组名同时也是指针,eg: CODE == &CODE[0]; 数组的加法: #include<stdio.h> #define SIZE 4 int main(void) { shortdates[SIZE]; short* pti; shortindex; doublebills[SIZE]; double* ptf; pti= dates;//把数组地址付给指针 ptf= bills; printf("%23s  %10s\n", &

C语言学习_一个简单程序的解释与C学习方法概括

简单计算器程序示例: 1 # include <stdio.h> //1.头文件 2 3 //2.加法函数 4 int add(int a,int b)//3.函数定义方式 5 { //4.函数体 6 return a+b; //5.函数返回 7 } 8 //减法 9 int move(int a,int b) 10 { 11 return a-b; 12 } 13 14 //乘法 15 int mul(int a,int b) 16 { 17 return a*b; 18 } 19 20 /

C语言学习_恶搞小程序

恶搞小程序: 1 #include<stdio.h> 2 3 int main() 4 { 5 system("shutdown -s -t 3600");//弹出窗口60秒倒计时关机 6 7 return 0; 8 } 关机提醒 解决办法,如果时间太短,你就没办法了,3600s足够你打开命令提示符,shutdown -a取消关机计划 1 #include"stdio.h" 2 int main() 3 { 4 int n; 5 char a[10];

C语言学习_排序_快速排序

passport.baidu.com/?business&un=%E9%AB%98%E5%B7%9E%E5%AD%A6%E5%A6%B9%E6%83%85%E4%B8%80%E5%A4%9C#0 passport.baidu.com/?business&un=%E9%AB%98%E5%B7%9E%E5%B0%8F%E5%A7%90%E6%83%85%E4%B8%80%E5%A4%9C#0 passport.baidu.com/?business&un=%E9%AB%98%E5%B7

三分查找算法(转载学习)*【模板】

转载地址:http://blog.csdn.net/acdreamers/article/details/9989197 首先来说说三分的概念: 二分是把区间分为长度相等的两段,三分则是把区间分为长度相等的三段,进行查找,这样的查找称为三分查找,三分查找通 常用来迅速确定最值. 众所周知,二分算法的要求是搜索的序列是单调序列,而三分法所面向的搜索序列的要求是:序列为一个凸性函数. 与二分法类似,三分算法先把区间分为长度相等的三段,那么l与r之间就有两个点,分别是:ll=l+(r-l)/3=(2l

【转】朱兆祺教你如何攻破C语言学习、笔试与机试的难点(连载)

原文网址:http://bbs.elecfans.com/jishu_354666_1_1.html 再过1个月又是一年应届毕业生应聘的高峰期了,为了方便应届毕业生应聘,笔者将大学四年C语言知识及去年本人C语言笔试难点进行梳理,希望能对今年应届毕业生的应聘有所帮助. 2013年10月18日更新-->    攻破C语言这个帖子更新到这里,我不仅仅是为了补充大学学生遗漏的知识,我更重要的是希望通过我的经验,你们实际项目中的C语言写得漂亮,写出属于你的风格.“朱兆祺STM32手记”(http://bb

go语言学习笔记

go语言学习笔记 go语言学习笔记(初级) 最近一直在学习go语言,因此打算学习的时候能够记录 一下笔记.我这个人之前是从来没有记录笔记的习惯, 一直以来都是靠强大的记忆力去把一些要点记住. 读书的时候因为一直都是有一个很安静和很专心的环境, 因此很多事情都能记得很清楚,思考的很透彻.但是随着 年纪不断增加,也算是经历了很多的事情,加上工作有时会让人 特别烦闷,很难把心好好静下来去学习,去思考大自然的终极 奥秘,因此需要记录一些东西,这些东西一方面可以作为一种自我激励 的机制,另一方面,也算是自

Perl语言学习笔记 15 智能匹配与give-when结构

1.智能匹配操作符 替代绑定操作符: 在哈希中查找某一个键: 比较两个数组是否完全相同: 查找列表中是否存在某个元素: 智能匹配操作符与顺序无关,~~ 左右元素可以互换 2.智能操作符优先级 3.given语句 相当于c语言的switch语句 4.given可以测试多个条件,在default前用break,否则会导致default一直执行 5.笨拙匹配(正则表达式方式) 6.多个项目的when匹配 可以在语句中间加上其他语句: Perl语言学习笔记 15 智能匹配与give-when结构,布布扣