تمرين من المصدر الأصلي · تطبيق عملي

نوع

استخدم الشرح العربي للفهم، واعتمد صفحة CS50 الأصلية مرجعًا نهائيًا للمواصفات والتسليم.

جلسة دراسة مقترحة: حتى 60 دقيقةالجهد الكلي التقريبي: 120 دقيقة · أكمل من حيث توقفت لاحقًا.Week 3
محاور هذه الخطوة
  • البحث
  • الترتيب
  • الاستدعاء الذاتي
  • Big O

ترجمة آلية تحت المراجعة

نوع

المصدر الأصلي

قائمة تنفيذ التمرين

تُحفظ علامات هذه القائمة على هذا الجهاز والمتصفح فقط. أنشئ حسابًا مفعّلًا لحفظ إنجاز التمرين في مسارك.

نوع

مشكلة بحاجة إلى حل

تذكر من المحاضرة أننا رأينا بعض الخوارزميات لفرز سلسلة من الأرقام: فرز التحديد، وفرز الفقاعات، وفرز الدمج.

  • يتكرر فرز التحديد عبر الأجزاء غير المصنفة من القائمة، مع تحديد أصغر عنصر في كل مرة ونقله إلى موقعه الصحيح.
  • يقوم الفرز الفقاعي بمقارنة أزواج من القيم المتجاورة واحدة تلو الأخرى وتبديلها إذا كانت بالترتيب غير الصحيح. يستمر هذا حتى يتم فرز القائمة.
  • يؤدي فرز الدمج إلى تقسيم القائمة إلى قسمين بشكل متكرر ثم دمج القوائم الأصغر مرة أخرى في قائمة أكبر بالترتيب الصحيح.

في هذه المشكلة، ستقوم بتحليل ثلاثة برامج فرز (مجمعة!) لتحديد الخوارزميات التي يستخدمونها. في ملف اسمه answers.txt في مجلد يسمى sortسجل إجاباتك مع شرح كل برنامج عن طريق ملء الفراغات المحددة TODO.

رمز التوزيع

بالنسبة لهذه المشكلة، ستحتاج إلى بعض "رمز التوزيع" - أي رمز مكتوب بواسطة موظفي CS50. يتم توفير ثلاثة برامج C تم تجميعها بالفعل، sort1, sort2و sort3، بالإضافة إلى العديد .txt ملفات للإدخال وملف آخر، answers.txt، لتكتب فيها إجاباتك. كل من يطبق sort1, sort2و sort3 خوارزمية فرز مختلفة: الفرز بالتحديد، أو الفرز الفقاعي، أو الفرز المدمج (ولكن ليس بالضرورة بهذا الترتيب!). مهمتك هي تحديد خوارزمية الفرز التي يستخدمها كل ملف. ابدأ بتنزيل هذه الملفات.

تنزيل ملفات التوزيع

مفتوح cs50.dev.

ابدأ بالنقر داخل النافذة الطرفية، ثم قم بالتنفيذ cd بمفرده. يجب أن تجد أن "المطالبة" الخاصة بها تشبه ما يلي.

$

انقر داخل تلك النافذة الطرفية ثم قم بالتنفيذ

wget https://cdn.cs50.net/2026/x/psets/3/sort.zip

متبوعًا بـ Enter لتنزيل ملف مضغوط يسمى sort.zip في مساحة الشيفرة الخاصة بك. احرص على عدم إغفال المسافة بينهما wget وعنوان URL التالي، أو أي حرف آخر في هذا الشأن!

نفذ الآن

unzip sort.zip

لإنشاء مجلد يسمى sort. لم تعد بحاجة إلى ملف ZIP، حتى تتمكن من التنفيذ

rm sort.zip

ثم قم بالرد بـ "y" متبوعًا بـ Enter عند المطالبة لإزالة ملف ZIP الذي قمت بتنزيله.

تلميحات

اكتشف .txt الملفات
  • متعددة يتم توفير ملفات .txt لك. تحتوي هذه الملفات n سطور من القيم، إما معكوسة أو مختلطة أو مرتبة.
    • على سبيل المثال، reversed10000.txt يحتوي على 10000 سطر من الأرقام التي تم عكسها 10000، بينما random50000.txt يحتوي على 50000 سطر من الأرقام بترتيب عشوائي.
  • الأنواع المختلفة ل قد تساعدك ملفات .txt في تحديد أي نوع. فكر في كيفية أداء كل خوارزمية مع القائمة التي تم فرزها بالفعل. ماذا عن القائمة المعكوسة؟ أو قائمة مختلطة؟ قد يكون من المفيد العمل من خلال قائمة أصغر من كل نوع والمشي خلال كل عملية فرز.
حدد الوقت لكل عملية فرز بمدخلات مختلفة
  • لتشغيل عمليات الفرز على الملفات النصية، قم بتشغيلها في الجهاز ./[program_name] [text_file.txt]. تأكد من أنك قد استفدت cd للانتقال إلى sort الدليل!
    • على سبيل المثال، للفرز reversed10000.txt مع sort1، اركض ./sort1 reversed10000.txt.
  • قد تجد أنه من المفيد تحديد وقت لأنواعك. للقيام بذلك، تشغيل time ./[sort_file] [text_file.txt].
    • على سبيل المثال، يمكنك الجري time ./sort1 reversed10000.txt للتشغيل sort1 على 10000 رقم معكوس. في نهاية مخرجات جهازك الطرفي، يمكنك إلقاء نظرة على real الوقت لمعرفة مقدار الوقت المنقضي فعليًا أثناء تشغيل البرنامج.

الإرشادات التفصيلية

محتوى خارجي من مشغل CS50

لن نتصل بهذه الخدمة قبل موافقتك. يمكنك فتح المصدر في نافذة مستقلة بدل تحميله هنا.

فتح المصدر
لست متأكدًا من كيفية الحل؟
محتوى خارجي من مشغل CS50

لن نتصل بهذه الخدمة قبل موافقتك. يمكنك فتح المصدر في نافذة مستقلة بدل تحميله هنا.

فتح المصدر

كيفية الاختبار

صحة

check50 cs50/problems/2026/x/sort

كيفية الإرسال

في جهازك الطرفي، قم بتنفيذ ما يلي لإرسال عملك، والإجابة على المطالبات التي تظهر أيضًا.

submit50 cs50/problems/2026/x/sort

أنهيت التطبيق؟

راجع عناصر التنفيذ أعلاه، ثم احفظ إنجازك وانتقل إلى التمرين التالي.

حفظ إنجاز التمرين

يمكنك قراءة الدورة كاملة دون حساب. يصبح حفظ التقدم متاحًا بعد تفعيل الحساب، ويبقى محفوظًا بعد انتهاء العضوية.

العودة إلى جميع التمارين