في هذه التدريبات ، سوف تمارس تحديد التعقيد الكبير للخوارزميات. لكل تدريبات ، سنقدم مقتطف رمز لوظيفة ، وستعمل على التعقيد الكبير من خلال تحليل الكود دون تشغيله.
حدد O Big O للخوارزمية التالية: أنت تجلس في غرفة بها 15 شخصًا. تريد أن تجد زميلًا في اللعب لكلبك ، ويفضل أن يكون من نفس السلالة. لذلك تريد أن تعرف ما إذا كان أي شخص من بين 15 شخصًا لديه نفس السلالة مثل كلبك. أنت تقف وتصرخ ، الذي لديه هنا مسترد ذهبي وترغب في أن تكون لعبة لعب للذهبي. شخص ما يصرخ - "أنا أفعل ، كن سعيدا لإحضاره"
حدد O Big O للخوارزمية التالية: أنت تجلس في غرفة بها 15 شخصًا. تريد أن تجد زميلًا في اللعب لكلبك من نفس السلالة. لذلك تريد أن تعرف ما إذا كان أي شخص من بين 15 شخصًا لديه نفس السلالة مثل كلبك. تبدأ مع الشخص الأول وتسأله عما إذا كان لديه مسترد ذهبي. يقول لا ، ثم تسأل الشخص التالي ، والآخر ، والآخر حتى تجد شخصًا لديه ذهبية أو لا يوجد أي شخص آخر يسأله.
ما هي الخوارزمية الكبيرة التالية؟ اشرح إجابتك
if (value % 2 === 0) {
return true;
}
else {
return false;
}
}
ما هي الخوارزمية الكبيرة التالية؟ اشرح إجابتك
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;
}
ما هي الخوارزمية الكبيرة التالية؟ اشرح إجابتك
for (let i = 0; i < array.length; i++) {
array[i] *= 2;
}
return array;
}
ما هي الخوارزمية الكبيرة التالية؟ اشرح إجابتك
for (let i = 0; i < array.length; i++) {
if (array[i] === item) {
return i;
}
}
}
ما هي الخوارزمية الكبيرة التالية؟ اشرح إجابتك
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;
}
في هذا المثال ، نعود إلى مشكلة البحث باستخدام نهج أكثر تطوراً من البحث الساذج أعلاه. افترض أن صفيف الإدخال يتم فرزه دائمًا. ما هي الخوارزمية الكبيرة التالية؟ اشرح إجابتك
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;
}
ما هي الخوارزمية الكبيرة التالية؟ اشرح إجابتك
return arr[Math.floor(Math.random() * arr.length)];
}
ماذا تفعل الخوارزمية التالية؟ ما هي الخوارزمية الكبيرة التالية؟ اشرح إجابتك
if (n < 2 || n % 1 !== 0) {
return false;
}
for (let i = 2; i < n; ++i) {
if (n % i === 0) return false;
}
return true;
}
برج Hanoi هو لغز رياضي مشهور جدًا (بعضها يدعو إلى لعبة!). هكذا تسير الأمور:
هناك ثلاثة قضبان وعدد من الأقراص بأحجام مختلفة يمكن أن تنزلق على أي قضيب. يبدأ اللغز بالأقراص المكدسة بدقة بترتيب تصاعدي من الحجم على قضيب واحد ، وأصغر قرص في الأعلى (مما يجعل شكل مخروطي). القضبان الأخرى فارغة لتبدأ.
الهدف من اللغز هو نقل كومة القضبان بأكملها إلى قضيب آخر (لا يمكن أن يكون القضيب الأصلي حيث تم تكديسه من قبل) حيث سيتم تكديسه بالترتيب الصاعد أيضًا. يجب أن يتم ذلك طاعة القواعد التالية:
مهمتك:
حل التدريبات ملف JS 12 بشكل متكرر.
خذ الحلول من هذا الريبو وحدد التعقيدات الزمنية (كبيرة O) لكل منها.
خذ حلولك من التدريبات التكرارية في ملف JS 12 وحدد التعقيدات الزمنية (الكبيرة O) لكل منها.