What is an Algorithm؟
ليست أي خطوات تسمى "خوارزمية". يجب أن تتوفر فيها 7 شروط :
Searching Algorithms
Linear Search (البحث الخطي)
ابحث عن العنصر $x$ بالمرور على القائمة واحداً تلو الآخر.
Binary Search (البحث الثنائي)
اقسم القائمة لنصفين في كل مرة. (يشرط أن تكون القائمة مرتبة!).
Sorting Algorithms
Bubble Sort (ترتيب الفقاعة)
قارن كل عنصرين متجاورين وبدل بينهما إذا كانا في ترتيب خاطئ. كرر العملية $n$ مرة.
التعقيد: $O(n^2)$. (بطيء جداً).
Insertion Sort (الترتيب بالإدراج)
ابدأ بالعنصر الثاني، وقارنه بما قبله وضعه في مكانه الصحيح.
التعقيد: $O(n^2)$ (أسوأ حالة)، ولكنه سريع إذا كانت القائمة شبه مرتبة.
Growth of Functions
Big-O ($O$)
Upper Bound (أسوأ حالة)
for $x > k$
Big-Omega ($\Omega$)
Lower Bound (أفضل حالة)
for $x > k$
Big-Theta ($\Theta$)
Tight Bound (بالضبط)
Hierarchy of Complexity
Binary Search Input
هل يعمل البحث الثنائي على أي قائمة؟
لا! يجب أن تكون القائمة مرتبة (Sorted) أولاً.
إذا لم تكن مرتبة، يجب ترتيبها أولاً (وهذا يكلف وقتاً) أو استخدام Linear Search.
Showing $x^2 + 2x + 1$ is $O(x^2)$
We need $C, k$ such that $x^2 + 2x + 1 \le C x^2$.
Let $k=1$. Since $x \ge 1$:
$x^2 + 2x + 1 \le x^2 + 2x^2 + x^2 = 4x^2$.
So, $C=4, k=1$. Done!