在这些练习中,您将练习确定算法的大复杂性。对于每个钻头,我们将提供一个具有功能的代码段,您将通过分析代码而无需运行代码来确定大量的复杂性。
确定以下算法的大O:您坐在有15个人的房间里。您想为您的狗找到一个玩伴,最好是同一品种。因此,您想知道15个人中的任何人是否与您的狗具有相同的品种。您站起来大喊大叫,在这里有一个金毛猎犬,想成为我的金色的比赛日期。有人大喊大叫 - “我愿意,很乐意把他带走”
确定以下算法的大O:您坐在有15个人的房间里。您想找到一个同一品种的狗的玩伴。因此,您想知道15个人中的任何人是否与您的狗具有相同的品种。您从第一人称开始,问他是否有金毛寻回犬。他说不,然后您问下一个人和下一个人,下一个人,直到找到一个有金色或没有其他人要问的人。
以下算法的大O是什么?解释您的答案
if (value % 2 === 0) {
return true;
}
else {
return false;
}
}
以下算法的大O是什么?解释您的答案
for (let i = 0; i < arr1.length; i++) {
const el1 = arr1[i];
for (let j = 0; j < arr2.length; j++) {
const el2 = arr2[j];
if (el1 === el2) return true;
}
}
return false;
}
以下算法的大O是什么?解释您的答案
for (let i = 0; i < array.length; i++) {
array[i] *= 2;
}
return array;
}
以下算法的大O是什么?解释您的答案
for (let i = 0; i < array.length; i++) {
if (array[i] === item) {
return i;
}
}
}
以下算法的大O是什么?解释您的答案
for (let i = 0; i < arr.length; i++) {
for(let j = i + 1; j < arr.length; j++) {
console.log(arr[i] + ", " + arr[j] );
}
}
}
以下算法有什么作用?它的运行时复杂性是什么?解释您的答案
let result = [];
for (let i = 1; i <= num; i++) {
if (i === 1) {
result.push(0);
}
else if (i === 2) {
result.push(1);
}
else {
result.push(result[i - 2] + result[i - 3]);
}
}
return result;
}
在此示例中,我们回到了使用更复杂的方法搜索的问题,而不是在上面的幼稚搜索中。假设输入阵列始终是分类的。以下算法的大O是什么?解释您的答案
let minIndex = 0;
let maxIndex = array.length - 1;
let currentIndex;
let currentElement;
while (minIndex <= maxIndex) {
currentIndex = Math.floor((minIndex + maxIndex) / 2);
currentElement = array[currentIndex];
if (currentElement < item) {
minIndex = currentIndex + 1;
}
else if (currentElement > item) {
maxIndex = currentIndex - 1;
}
else {
return currentIndex;
}
}
return -1;
}
以下算法的大O是什么?解释您的答案
return arr[Math.floor(Math.random() * arr.length)];
}
以下算法有什么作用?以下算法的大O是什么?解释您的答案
if (n < 2 || n % 1 !== 0) {
return false;
}
for (let i = 2; i < n; ++i) {
if (n % i === 0) return false;
}
return true;
}
河内塔是一个非常著名的数学难题(有些人称之为游戏!)。这就是这样:
有三个杆和许多不同尺寸的磁盘可以滑到任何杆上。拼图始于磁盘在一根杆上以尺寸上升顺序整齐地堆叠起来,这是顶部最小的磁盘(形成圆锥形)。另外两个杆一开始是空的。
难题的目的是将整个杆堆移到另一根杆(不能是以前被堆叠的原始杆),也将其沿着上升顺序堆叠。遵守以下规则应该做到这一点:
您的任务:
迭代而不是递归解决钻头文件12。
从此存储库中获取解决方案,并确定每个回购的时间复杂性(大O)。
从JS文件12中的迭代练习中获取解决方案,并确定每个练习的时间复杂性(大O)。