[存档!]纯数学、物理学、化学等:与贸易没有任何关系的大脑训练问题 - 页 584

 
alsu:

一气呵成。

创建一个相同大小的数组的空拷贝,用二进制初始化它。

从阵列的开头开始。遭遇1--从头写到副本,遭遇3--从尾写到副本。


而以二为单位的初始化(平均66%无用)就不是合格的?
此外,你还必须同时监控三分球!
 
GaryKa:

我给你一个小任务。

当然,这是一个黑客,但在工作面试中,它可以作为数组排序知识的神化。)


因此,分类的任务是

有一个由N个单元格组成的阵列,其中的1、2、3是按随机顺序放置的。

建立最佳的排序算法。


一遍计数,第二遍填入数组
 
alsu:

一气呵成。

创建一个相同大小的数组的空拷贝,用二进制初始化它。

从阵列的开头开始。如果遇到1,就从头写到副本;如果遇到3,就从尾写到副本。

没有副本(或者你会说,填写副本是一个单独的通行证)。

n=0,m=0

从阵列的开头开始。如果我们遇到1--用从头开始的第n个元素改变它,不等于1(根据结构,它总是2),n++;如果我们遇到3--用从头开始的第m个元素改变它,不等于3,m++,如果我们遇到1,我们遵循第一部分的步骤。

 
alsu:

没有副本(或者你会说,填写副本是一个单独的通行证)

n=0,m=0

我们从阵列的开头开始。如果我们遇到1,我们用从头开始的第n个元素改变它,不等于1(根据结构,它总是2),n++;如果我们遇到3,我们用从尾部开始的第m个元素改变它,不等于3,m++,如果我们遇到1,我们按第一部分所述进行。


平均半个月的时间,加上同样的时间进行交流
 
alsu:

没有副本(或者你会说,填写副本是一个单独的通行证)

n=0,m=0

我们从阵列的开头开始。如果我们遇到1,我们用从头开始的第n个元素改变它,不等于1(根据结构,它总是2),n++;如果我们遇到3,我们用从尾部开始的第m个元素改变它,不等于3,m++,如果我们遇到1,我们按第一部分所述进行。



这是个很好的方法。
 
alsu:
减少通行次数并不总是能提高速度。
 
交换一个数组的 两个元素 是3个操作。它不太可能更快。
 
TheXpert:
减少通行次数并不总是能提高速度。
好吧,优化标准没有设定...
 
让我提出一个问题。
A+B=...
 
alsu:

没有副本(或者你会说,填写副本是一个单独的通行证)

n=0,m=0

我们从阵列的开头开始。如果我们遇到1,我们用从头开始的第n个元素改变它,不等于1(根据结构,它总是2),n++;如果我们遇到3,我们用从尾部开始的第m个元素改变它,不等于3,m++,如果我们遇到1,我们按第一部分所述进行。



好主意。