الخوارزميات وهياكل البيانات في Swift: دورة كاملة للمبتدئين

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مقدمة في الخوارزميات وهياكل البيانات في Swift

Swift هي لغة برمجة قوية وبديهية، طورتها Apple لتطوير التطبيقات لأنظمة iOS و macOS و watchOS و tvOS. ومع ذلك، لكتابة كود فعال وسريع، لا يكفي مجرد معرفة بناء الجملة. فهم الخوارزميات وهياكل البيانات هو الأساس الذي يحول المبتدئ إلى مطور محترف.

في هذه المقالة، سنشرح هياكل البيانات الأساسية (المصفوفات، القواميس، المجموعات) والخوارزميات الرئيسية (الفرز، البحث) في Swift. جميع أمثلة الكود جاهزة للتشغيل في Xcode Playground.



هياكل البيانات الأساسية في Swift

توفر Swift هياكل بيانات مدمجة محسّنة للعمل مع الذاكرة والأداء. دعنا نلقي نظرة على الثلاثة الأكثر أهمية.



المصفوفات (Array)

المصفوفة هي مجموعة مرتبة من العناصر من نفس النوع. في Swift، المصفوفات مقيدة بشدة ولها ترتيب ثابت.

// إنشاء مصفوفةvar numbers: [Int] = [1, 2, 3, 4, 5]

// إضافة عنصرnumbers.append(6)

// الوصول عبر الفهرسlet first = numbers[0] // 1

// التكرارfor number in numbers { print(number)}

// الفرز في المكانnumbers.sort() // [1, 2, 3, 4, 5, 6]

المصفوفات مثالية عندما يكون ترتيب العناصر مهمًا وتحتاج إلى وصول سريع عبر الفهرس (O(1)). ومع ذلك، فإن الإدراج أو الحذف في بداية المصفوفة يتطلب وقتًا O(n).



القواميس (Dictionary)

يخزن القاموس أزواج "مفتاح-قيمة". يجب أن تكون المفاتيح فريدة وقابلة للتجزئة (مثل String أو Int).

// إنشاء قاموسvar scores: [String: Int] = ["Alice": 95, "Bob": 87]

// إضافة أو تحديثscores["Charlie"] = 92

// الحصول على القيمة (اختياري)if let aliceScore = scores["Alice"] { print("Alice's score: \\(aliceScore)")}

// الحذفscores.removeValue(forKey: "Bob")

توفر القواميس الوصول إلى القيمة عبر المفتاح في O(1) في المتوسط. استخدمها عندما يتم تجميع البيانات بشكل طبيعي بواسطة مفاتيح فريدة.



المجموعات (Set)

المجموعة هي مجموعة غير مرتبة من العناصر الفريدة. مفيدة للتحقق من الانتماء وإزالة التكرارات.

// إنشاء مجموعةvar fruits: Set<String> = ["Apple", "Banana", "Orange"]

// إضافةfruits.insert("Mango")

// التحقق من الوجودif fruits.contains("Apple") { print("Apple is in the set")}

// إزالة التكرارات من مصفوفةlet arrayWithDuplicates = [1, 1, 2, 3, 3, 4]let uniqueSet = Set(arrayWithDuplicates) // {1, 2, 3, 4}


الخوارزميات الأساسية في Swift

الآن سنطبق هياكل البيانات لحل المهام النموذجية. سننظر في الفرز والبحث.



خوارزميات الفرز

لدى Swift دالة مدمجة sort()، ولكن للفهم سنكتب خوارزمية الفرز السريع (Quick Sort) الكلاسيكية.

func quickSort(_ array: [Int]) -> [Int] {    guard array.count > 1 else { return array }        let pivot = array[array.count / 2]    let less = array.filter { $0 < pivot }    let equal = array.filter { $0 == pivot }    let greater = array.filter { $0 > pivot }        return quickSort(less) + equal + quickSort(greater)}

let unsorted = [3, 6, 1, 8, 2, 9, 4]let sorted = quickSort(unsorted)print(sorted) // [1, 2, 3, 4, 6, 8, 9]

الفرز السريع هو أحد أكثر الخوارزميات كفاءة بمتوسط تعقيد O(n log n). للمصفوفات الصغيرة، يمكنك استخدام الدالة المدمجة sorted().



خوارزميات البحث

البحث الخطي بسيط ولكنه بطيء (O(n)). للبيانات المرتبة، استخدم البحث الثنائي (O(log n)).

// البحث الثنائيfunc binarySearch(_ array: [Int], target: Int) -> Int? {    var low = 0    var high = array.count - 1        while low <= high {        let mid = (low + high)                

المدونات

توصيات الكتب