Skip to content

2. Algorithms — الگورتھم

Difficulty: Advanced — اعلیٰ
Time: ~35 minutes


Importing — درآمد

درآمد {
    بلبلہ_ترتیب, انتخاب_ترتیب, اندراج_ترتیب,
    ضم_ترتیب, تیز_ترتیب, ڈھیر_ترتیب,
    خطی_تلاش, دوئی_تلاش,
    ہیش_جدول,
    اعظم_مشترک_قاسم, اقل_مشترک_ضرب,
    فیبوناچی, فیبوناچی_سلسلہ,
    فیکٹوریل, عدد_زائی_ہے, اعداد_زائیہ,
    لیوینشٹین_فاصلہ, کے_ایم_پی_تلاش
} سے "اردو/الگورتھم";

Sorting Algorithms — ترتیب کے الگورتھم

All sorting functions return a new sorted list — the original is not modified.

متغیر فہرست_م = [5, 2, 8, 1, 9, 3];

لکھو(بلبلہ_ترتیب(فہرست_م));    // [1, 2, 3, 5, 8, 9]
لکھو(انتخاب_ترتیب(فہرست_م));   // [1, 2, 3, 5, 8, 9]
لکھو(اندراج_ترتیب(فہرست_م));   // [1, 2, 3, 5, 8, 9]
لکھو(ضم_ترتیب(فہرست_م));       // [1, 2, 3, 5, 8, 9]
لکھو(تیز_ترتیب(فہرست_م));      // [1, 2, 3, 5, 8, 9]
لکھو(ڈھیر_ترتیب(فہرست_م));     // [1, 2, 3, 5, 8, 9]
لکھو(فہرست_م);                  // [5, 2, 8, 1, 9, 3]  (unchanged)
Algorithm Urdu Time Best For
بلبلہ_ترتیب Bubble Sort O(n²) Learning only
انتخاب_ترتیب Selection Sort O(n²) Small lists
اندراج_ترتیب Insertion Sort O(n²) Nearly sorted data
ضم_ترتیب Merge Sort O(n log n) Stable sort needed
تیز_ترتیب Quick Sort O(n log n) avg General purpose
ڈھیر_ترتیب Heap Sort O(n log n) Guaranteed performance

اردو: تمام ترتیب فنکشن نئی ترتیب شدہ فہرست واپس کرتے ہیں، اصل فہرست نہیں بدلتی۔


Searching Algorithms — تلاش کے الگورتھم

Scans every element. Works on unsorted lists. Returns index or -1.

متغیر فہرست_م = [5, 2, 8, 1, 9, 3];

لکھو(خطی_تلاش(فہرست_م, 8));    // 2   (index)
لکھو(خطی_تلاش(فہرست_م, 7));    // -1  (not found)

Requires a sorted list. O(log n) — very fast on large data.

متغیر ترتیب_م = [1, 3, 5, 7, 9, 11, 13];

لکھو(دوئی_تلاش(ترتیب_م, 7));     // 3   (index)
لکھو(دوئی_تلاش(ترتیب_م, 4));     // -1  (not found)

اردو: خطی_تلاش کسی بھی فہرست پر کام کرتی ہے مگر سست ہے۔ دوئی_تلاش صرف ترتیب شدہ فہرست پر، لیکن بہت تیز۔


Hash Table — ہیش جدول

Key-value store with O(1) average lookup. Works like a dictionary but implemented from scratch.

متغیر ہج = نیا ہیش_جدول();

// Set values
ہج["نام"] = "احمد";
ہج["عمر"] = 25;
ہج["شہر"] = "کراچی";

// Get values
لکھو(ہج["نام"]);                  // احمد
لکھو(ہج.حاصل_کریں("عمر"));       // 25
لکھو(ہج.حاصل_کریں("ملک", "پاکستان"));  // پاکستان (default)

// Check / remove
لکھو(ہج.موجود_ہے("نام"));         // True
ہج.نکالیں("شہر");

لکھو(ہج.کلیدیں());                // ['نام', 'عمر']
لکھو(ہج.قدریں());                  // ['احمد', 25]

Mathematical Algorithms — ریاضی الگورتھم

GCD and LCM — اعظم مشترک قاسم و اقل مشترک ضرب

لکھو(اعظم_مشترک_قاسم(12, 8));    // 4
لکھو(اعظم_مشترک_قاسم(48, 18));   // 6

لکھو(اقل_مشترک_ضرب(4, 6));       // 12
لکھو(اقل_مشترک_ضرب(3, 5));       // 15

Fibonacci — فیبوناچی

لکھو(فیبوناچی(10));               // 55   (0-indexed: 0,1,1,2,3,5,8,13,21,34,55)
لکھو(فیبوناچی(0));                // 0
لکھو(فیبوناچی(1));                // 1

لکھو(فیبوناچی_سلسلہ(8));
// [0, 1, 1, 2, 3, 5, 8, 13]

Factorial — فیکٹوریل

لکھو(فیکٹوریل(5));     // 120   (5! = 5×4×3×2×1)
لکھو(فیکٹوریل(10));    // 3628800
لکھو(فیکٹوریل(0));     // 1

Prime Numbers — اعداد زائیہ

لکھو(عدد_زائی_ہے(17));    // True
لکھو(عدد_زائی_ہے(18));    // False
لکھو(عدد_زائی_ہے(2));     // True

// All primes up to N (Sieve of Eratosthenes)
لکھو(اعداد_زائیہ(30));
// [2, 3, 5, 7, 11, 13, 17, 19, 23, 29]

اردو: اعداد_زائیہ(ن) ایراتوستھینز کی چھلنی سے ن تک تمام اعداد زائیہ دیتا ہے — بہت تیز الگورتھم۔


String Algorithms — متن الگورتھم

Edit Distance — لیوینشٹین فاصلہ

Number of single-character edits (insert, delete, replace) to transform one string into another:

لکھو(لیوینشٹین_فاصلہ("kitten", "sitting"));   // 3
لکھو(لیوینشٹین_فاصلہ("اردو", "اردو"));         // 0  (same)
لکھو(لیوینشٹین_فاصلہ("", "abc"));              // 3

Find all occurrences of a pattern in a text in O(n+m):

لکھو(کے_ایم_پی_تلاش("ab", "ababab"));    // [0, 2, 4]
لکھو(کے_ایم_پی_تلاش("اردو", "اردو پروگرامنگ اردو"));    // [0, 16]
لکھو(کے_ایم_پی_تلاش("xyz", "abcdef"));  // []

اردو: کے_ایم_پی_تلاش(نمونہ, متن) — تمام اشاریے دیتا ہے جہاں نمونہ ملا (0-indexed)۔


Practical Example: Word Frequency — عملی مثال: الفاظ کی تعداد

درآمد { ہیش_جدول, ترتیب } سے "اردو/الگورتھم";

فنکشن الفاظ_گنو(متن_م) {
    متغیر گنتی = نیا ہیش_جدول();
    متغیر الفاظ = تقسیم(متن_م.چھاٹو().چھوٹے_حروف());
    کے_لیے (متغیر لفظ میں الفاظ) {
        متغیر موجودہ = گنتی.حاصل_کریں(لفظ, 0);
        گنتی[لفظ] = موجودہ + 1;
    }
    واپس گنتی;
}

متغیر متن_م = "اردو زبان اردو پروگرامنگ اردو";
متغیر گنتی = الفاظ_گنو(متن_م);
لکھو(گنتی["اردو"]);        // 3
لکھو(گنتی["پروگرامنگ"]);   // 1

Key Points — اہم نکات

  • All sort functions return a new list; originals are unchanged
  • خطی_تلاش works on any list; دوئی_تلاش requires sorted input
  • ہیش_جدول supports [] operator and .حاصل_کریں(key, default)
  • اعداد_زائیہ(n) uses Sieve of Eratosthenes — efficient for large n
  • کے_ایم_پی_تلاش returns a list of all match positions

← Previous: Data Structures | Next: HTTP Client →