主页 » 正文

设计一个c语言程序,用最少的比较次数,搜索整型数组中的最大和最小数

十九科技网 2025-06-10 19:54:43 193 °C

设计一个c语言程序,用最少的比较次数,搜索整型数组中的最大和最小数

可以看到这个问题他们其他人的程序共有n-1趟循环,每趟循环进行2次比较,共有2*n - 2次比较。如果从尽可能减少比较操作次数来提高性能的角度出发,他们的程序并不是最优的,其实对n个数的数列,同时找出他们的最小值和最大值,最少的比较次数可做到3 * n / 2,这个次数是小于2*n-2的。算法的思路是: 将该列数每相邻两个分成一组,得出每组的较大者和较小者,这里进行了n / 2次比较,然后把各组的较大者放在一块找出它们的最大者即可得到全体中的最大元,这里将有(n / 2) - 1次比较(因为共分成n / 2组,因此是在n/2个数中选出最大值,所以需要n/2-1次比较),同理在n/2个较小者中选出最小值需要n/2-1次比较。所以这种算法大约需要3*n/2次比较,算比较快的了。实现时,将每相邻的两个元素分成一组,然后一组一组处理,例如下标为0的与下标为1为第1组,下标为2的与下标为3的为第2组,...下标为2i与下标为2i+1的为第i组,Max用于存储前i组中已决出的最大元,Min用于存储前i组中已决出的最小元,max用于表示第i组中的较大元,min表示第i组中的较小元,在处理第i组前,Max为前2(i - 1)个元素中的最大元,Min为前2(i - 1)个元素中的最小元,则处理第i组时,先比较a[2*i]与a[2*i+1],较大者为max,较小者为min,然后再将Max与max比较,其中较大的为前2i个元素中的最大者,再将Min与min比较,较小的即为前2i个元素中的最小者,当i为第n/2组时(即最后一组)结束:

bool find_MinMax(int a[], int n, int &Max, int &Min) { //从n个数中找出最大值Max与最小值Min

int max, min, i;

if(n < 1) return false; /*如果是空列,则返回失败*/

if(n == 1){ /*如果只有一个元素,则这个元素既是最大元又是最小元*/

Max = a[0], Min = a[0];

return true;

}

if(a[0] > a[1]) { /*先假定a[0]与a[1]中的较大元为最大元、较小元为最小元*/

Max = a[0], Min = a[1];

}

else {

Max = a[1], Min = a[0];

}

for(i = 1; 2 * i < n - 1; i++) {/*然后每两个为一组进行处理*/

if(a[2 * i] > a[2 * i + 1]) {

max = 2 * i, min = 2 * i + 1;

}

else {

max = 2 * i + 1, min = 2 * i;

}

if(a[max] > Max) Max = a[max];

if(a[min] < Min) Min = a[min];

}

if(n % 2) { //如果元素总个数为奇数,则处理最后的这个落单的元素

if(a[n - 1] > Max) Max = a[n - 1];

else if(a[n - 1] < Min) Min = a[n - 1];

}

return true;

}

影响人类生活的几个神奇数字是什么?

从算出了一杯咖啡的找零到规划退休基金,数字几乎影响了一个人生活的各个方面。然而,数字往往以意想不到的方式对我们的世界产生更深刻的影响。一个数学常数决定了我们的审美观和我们交朋友的数量。数学已经融入了我们的基因,这里列举的仅仅是少数改变我们生活的巧法。

1.邓巴号码

某些社区基本上很长一段时间不变,而其他社区,甚至现代街区会变得混乱和濒临崩溃。我们与一些朋友和同事的保持联系,完全忽视剩下的人,这显然没有理由。公司在雇用一定数量的员工后,似乎也有管理问题。这些事情看似无关,但它们都和一个数有关。

研究人员声称,人类社会是围绕着150这个数。在灵长类动物科学家认为,如果猴子的大脑皮层较大,他们的社会群体就会较大。经过对38组猴子进行计算研究,邓巴教授估计,人类处理社会关系的能力极致约为150。这意味着我们可以处理大约150个社会关系。在任何情况下,当我们要与超过150人处理关系时,我们往往会越来越没效率。例如,如果您计划开一个150人得派对,你可以很容易记住大家的名字以及他们喜欢或不喜欢坐在谁旁边。如果你要为300或 500人举办派对,你很可能忘记很多名字,并弄不清他们落座的位置。

还有其他一些例子,证明任何社会达到150多名成员后,人们对彼此的关怀会消失。例如,当镇上的居民超过150户时,犯罪成为一个严重的问题。在整个人类历史中,部队几乎总是按照150名士兵编制,这似乎更容易被控制。任何一个公司,如果办公室的雇员不超过150人,它会比有庞大的办公室的公司更具生产力。

2.黄金分割比例

这个数字是宇宙最广泛使用的了。人类不仅在时装、家具、艺术、音乐,甚至经济学上使用它,这个号码甚至出现在人体内、自然,甚至关乎银河系的形成。

黄金比例由希腊人最发现,它存在于自然界的一切,人们发现它的存在是如此美好。有许多书籍解释黄金比例起作用的过程以及美是一门非常精确的科学的原因。我们的脸和健康的人体都符合黄金比例。

这个数字来自一个螺旋,正好每个螺旋长度之间都是1.618倍的关系。这是一个常数,由于某种原因,成为一个普遍规律,它指引着一切,从我们的骨骼结构方式到藤蔓植物的生长。

3.成功的秘密

根据最近的研究,人才不真是与生俱来的。马尔科姆·格莱德威尔认为,非常成功的人是通过实践造出来的,包括比尔盖茨和披头士。有趣的是,我们可以知道任何一个人投入一件事并掌握它的小时数。科学家称,经过10,000小时,任何人都可以在任何一个领域成为专家。

享有国际声誉的披头士乐队,在德国俱乐部花了数年或更多时间,每天12小时的演奏。该乐队的经理和披头士自己承认,这种密集的训练使他们有能力形成自己的风格。如果10000小时的没有练习,披头士可能永远不会成功。比尔·盖茨同样在极少数人能私下接触到的计算机实验室中过了很多年。这是一个幸运的巧合,但这让他比同龄人更早地积累了约10,000小时的电脑经验。

同样的故事发生在史蒂夫·乔布斯身上,他也有机会在高中开始使用电脑。结论很简单,如果你想成功的话,一定要花费10000小时来做它。

4.7

著名心理学家乔治·米勒用一大堆文章证明了,我们的短期或工作记忆在它开始忽略新的信息或忘记旧的知识之前只有7个对象能够保留住。换句话说,如果有人告诉你10个名字,并请您写下来,你只能记住7个。

更有趣的是,研究显示长期记忆的数量也受7这个数影响。当新的信息被重复了7遍,我们容易记住更长的时间。营销人员甚至认为,产品价格以7结尾会卖的更好。出于某种原因,似乎2.97美元比1.99美元更具吸引力。

5.0

零真正的意义在于它所代表的概念。零的概念因使用这个数字的背景而定。这一系统被称为定位数字系统,它需要比罗马数字系统更复杂的运算。我们不仅可以讨论一个不存在的数字,还可以扩展到无穷大。

著名数学家乔治·霍尔斯特德的发言足见零不仅对数学重要,对现代文明也很重要。他说:“零的重要性永远不会言过其实。没有一个数学创造可以产生更多的智慧和力量。

版权声明:部分内容由互联网用户自发贡献,如有侵权/违规,请联系删除
本平台仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

本文链接地址:/dsj/214527.html

相关文章