السلام عليكم
في كتاب الخوارزميات - يوجد هذا السؤال
Design a theta(n lg n)-time algorithm that, given an array A of n integers and another integer x, determines whether or not there exist two (not necessarily distinct) elements in A whose sum is exactly x.
انا حسب فهمي للسؤال - كتبت خوارزمية هكذا
for i=1 --> n no = A for j=i+1 --> n if no + A == x return true return false
الخوارزمية كتبتها على عجالة ولم يتسنى لي التأكد من صحتها بعد
لكن سؤالي هو - وجدت مجموعة حلول على النت لهذا السؤال
وهذا واحد منها
1 Merge-Sort(A) 2 i 1 3 j length(A) 4 while i j 5 if A + A[j] equals x 6 return A,A[j] 7 if A + A[j] < x 8 then i i + 1 9 if A + A[j] > x 10 then j j − 1
انا لم افهم هذا الحل - كل الحلول التي وجدتها تقوم بترتيب المصفوفة - وطريقة الجمع غريبة - لماذا يجمع اول و اخر رقم؟
هل انا فاهم السؤال خطأ؟!!