تحدي بايثون سهل و شرح حاجه معينه برضوا

في داله مهمه جدا ف بايثون اسمها :

sorted()

الداله دي بتعمل ايه؟
الداله دي بترتب الليست او اي سيكوانس ترتيب تصاعدي او تنازلي :
لو عندي ليست :

lst = [5,8,1,2,4,7,9]

عايز ارتبها تصاعدي :

new_lst = sorted(lst)
print(new_lst)
#الناتج : [1,2,4,5,7,8,9]

ولو عايز ارتيها ترتيب تنازلي :

new_lst = sorted(lst,reverse=-1)
print(new_lst)
#الناتج : [9,8,7,5,4,2,1]

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

التحدي بقا

وصف التحدي

قم بكتابة دالة function تستقبل مصوفتان مكونة من اعداد صحيحة ومرتبة، تقوم هذه function بدمج المصفوفتان داخل مصفوفة واحدة بشكل مرتب ومن ثم تقوم بإرجاعها.

الحل

اضغط هنا لرؤية الحل
def mergeAndOrder(array1, array2):
    array1.extend(array2)
    return sorted(array1)
إعجابَين (2)

جميل كما انه هناك ميثود ايضا للترتيب وهى .sort () ولاكنها للقوائم فقط

مثال عليها :

list = [5,7,9,6,2,1] # انشاء قائمه

print(list) # طباعه القائمه

list.sort() # ترتيب القائمه تصاعديا

print(list) # طباعه القائمة بعد الترتيب تصاعديا

list.sort(reverse=True) # ترتيب القائمه تنازليا

print(list) # طباعه القائمة بعد الترتيب تنازليا

الناتج

[5, 7, 9, 6, 2, 1]
[1, 2, 5, 6, 7, 9]
[9, 7, 6, 5, 2, 1]

التحدي بسيط جدًا! يمكنك حلّه باستخدام دالة sorted() أو بطريقة يدوية عبر دمج القائمتين باستخدام خوارزمية الدمج (merge algorithm). إليك الحل باستخدام sorted():

:white_check_mark: الحل باستخدام sorted():

def merge_sorted_lists(lst1, lst2):
    return sorted(lst1 + lst2)

# تجربة الحل
lst1 = [1, 3, 5, 7]
lst2 = [2, 4, 6, 8]
print(merge_sorted_lists(lst1, lst2))  
# الناتج: [1, 2, 3, 4, 5, 6, 7, 8]

:white_check_mark: الحل باستخدام خوارزمية الدمج (بدون sorted()):

def merge_sorted_lists(lst1, lst2):
    merged = []
    i, j = 0, 0

    while i < len(lst1) and j < len(lst2):
        if lst1[i] < lst2[j]:
            merged.append(lst1[i])
            i += 1
        else:
            merged.append(lst2[j])
            j += 1

    # إضافة العناصر المتبقية
    merged.extend(lst1[i:])
    merged.extend(lst2[j:])

    return merged

# تجربة الحل
lst1 = [1, 3, 5, 7]
lst2 = [2, 4, 6, 8]
print(merge_sorted_lists(lst1, lst2))  
# الناتج: [1, 2, 3, 4, 5, 6, 7, 8]

:bulb: ملاحظة:

  • الحل الأول أسهل ولكنه يستخدم sorted()، مما يجعله أقل كفاءة من الحل الثاني الذي يعمل بزمن O(n + m).
  • الحل الثاني يعتمد على خوارزمية الدمج المستخدمة في Merge Sort، وهو أكثر كفاءة إذا كنت تريد استغلال ترتيب القوائم المسبق.

:dart: جرب الحل بنفسك وأخبرني إذا كنت تريد توضيحًا لأي جزء! :rocket:

3 إعجابات

ما شاء الله عاش
:muscle:
فكره فرق السرعه بين الحلين لسه الكورس الاساسي متكلمش عليها لذلك استخدام الداله انسب لنا هنا يعني
شكرا يا ملك ع المعلومات اللي اضفتها

إعجابَين (2)