Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 与人类级别的方法相比,代码进行了更多的交换_C - Fatal编程技术网

C 与人类级别的方法相比,代码进行了更多的交换

C 与人类级别的方法相比,代码进行了更多的交换,c,C,如果一个人想将数字1,2,3,4从最大到最小重新排列,他会检查第二个数字是否大于第一个数字,但在检查完其余数字之前不会交换位置 新顺序变为:4,2,3,1 但是,一旦确定“2”大于“1”,下面的代码将交换“1”和“2”的位置 新顺序变为:2,1,3,4 该程序将进行比人类更多的交换。 因此,也许它不如人类的方法有效 有没有一种方法可以将人类方法的效率应用到这个程序中?或者也许人类的方法不是更有效,而是简单地以这种方式出现 int a[] = {1,2,3,4}; int total; total

如果一个人想将数字
1,2,3,4
从最大到最小重新排列,他会检查第二个数字是否大于第一个数字,但在检查完其余数字之前不会交换位置

新顺序变为:
4,2,3,1

但是,一旦确定“
2
”大于“
1
”,下面的代码将交换“
1
”和“
2
”的位置

新顺序变为:
2,1,3,4

该程序将进行比人类更多的交换。
因此,也许它不如人类的方法有效

有没有一种方法可以将人类方法的效率应用到这个程序中?或者也许人类的方法不是更有效,而是简单地以这种方式出现

int a[] = {1,2,3,4};
int total;
total = 4;

int i;
int i2;
int holder = 0;

for (i=0; i<total;) {

    for (i2=i+1; i2<total;) {

    if(a[i] < a[i2]) {
    holder = a[i];
    a[i] = a[i2];
    a[i2] = holder;
    }

    i2=i2+1;
    }

i=i+1;
}
inta[]={1,2,3,4};
整数合计;
总数=4;
int i;
int i2;
int holder=0;

对于(i=0;i请注意,以下观点是我自己的观点,无论是否存在关于该主题的任何文献。无论“科学”如何定义,它们都不应被视为科学


简短的回答是:

  • 我们不知道人脑实际上是如何工作的——这里指的是数学计算、比较等

  • 可以肯定的是,人脑的工作方式与任何计算机都截然不同


  • 也许我的“比喻”并不准确,但我得出了这样的结论:人脑“视觉”进行许多(大多数?)计算:你只要看一眼,就能知道正确的答案。计算机需要非常复杂的算法,但它可能仍然无法解决这个问题

    此外,人脑能够产生一个完全不同的问题,其结果/答案与原始问题相同,但计算起来要容易得多。而且,在大多数情况下,我们甚至都没有意识到这一点

    在一篇评论中已经提到了这一点:以你的问题为例,人类不会对数字列表进行排序,他只会从4倒计时到1

    如果问题会提供不同的数字,例如{5,21,48,16},大脑核心将“视觉”检测列表中的最大值和最小值,并按照正确的顺序重新排列它们,而不进行真正的比较(至少我们不知道它们)


    人类的大脑绝对是多核的。但这些核心并不像计算机那样是独立的,它们只交换一些数据。它们是可永久重新配置的,我怀疑大脑的这些“核心”实际上是重叠的,不仅在数据方面,而且在执行方面


    要了解“生物计算机”中的计算类型:

    参考文献:

    数学:

    • 1亿个杆状细胞
    • 700万个锥细胞
    • 每个人的视神经包含77万到170万条神经纤维
    现在你看,最多170万条视神经将1.07亿个传感器连接到大脑。这实际上是图像/视频压缩的“定义”。眼睛(视网膜?)本身就是一台独立的计算机。如果它能够进行视频压缩,那么它必须能够(我的意见)排序一个简短的列表,而不需要将数据传递给大脑。这可能是一个解释,为什么我们知道一个问题的答案,只要看看它-我们收到的答案与问题-所有的工作都在别处完成



    生物计算机在某种程度上进行数学比较似乎是“显而易见的”,只是我们不知道它们是在哪里以及如何制造的。可能是在低级别的“驱动程序”中?可能是卸载到其他处理单元?一个“硬件加速器”?也许,希望未来会告诉我们。

    您正在对人类通常使用的算法进行假设。我通常会在手动排序时使用。当人类看到这样一个简单的问题时,他们会将问题视为一个整体,并计算最终答案。然后再寻找最佳交换。也就是说,第一个人类的ep是计算最终排序的数组。计算机不能看到问题的整体,也不能跳转到最终数组。@user3386109,我认为人类的大脑在内存中保存数字,然后寻找一个更大的数字,如果它找到一个更大的数字,它就会寻找一个比这个更大的数字先前较大的数字,如果找到一个较大的数字,则较大的数字将与先前较大的数字交换。因此,人类大脑中可能实际上存在更多的for循环。事物保存在“内存”中,换句话说,保存在“持有者”或“缓冲区”中,而不是进行交换。人类大脑将数据保存在“思想”中直到没有更多的项目可供检查。@SümerKolçak“如果人类想将数字1、2、3、4从最大值重新排列到最小值”,然后人类注意到1,2,3,4是前四个自然数,因此答案只是从4开始倒数。@user3386109,人类在检查和验证所有内容之前无法知道这一点。但是,它验证的内容可能与问题中的代码不同。它可能有更多的“for循环”并将内容保存在缓冲区中(思考),而不是将内容重新安排太多次。可能代码不使用人工级别的方法,因为它希望避免太多的“for循环”。但可能更多的“
    for循环”
    ”如果问题中的代码是由机器人处理的,并且这个机器人有手臂来重新排列数字,如果这个机器人作为“角色模型”呈现给全世界如果人类模仿这个机器人的方法,这个机器人可能会毁掉世界,因为它会不断地重新安排数字,并消耗大量的能量