Abdelrehman Elsied نشر 7 أغسطس أرسل تقرير نشر 7 أغسطس سلام عليكم. حاولت تطبيق خوارزميه ال Bubble Sort بلغه ال C++. #include <iostream> using namespace std; #define LEN 7 int main() { int numbers[] = { 1, 2, 5, 4, 7, 9, 3 }; int tmp; int check; for (int i = LEN-1; i >= 0; i--) { check = 1; for (int j = 0; j < i; j++) { if (numbers[j] > numbers[j + 1]) { check = 0; // swap numbers[j] & numbers[j+1] tmp = numbers[j]; numbers[j] = numbers[j+1]; numbers[j + 1] = tmp; } } if (check == 1) break; } for (int i = 0; i < LEN; i++) { cout<<numbers[i]<<"\n"; } } هل هذا الكود صحيح. 1 اقتباس
0 محمد_عاطف نشر 7 أغسطس أرسل تقرير نشر 7 أغسطس وعليكم السلام ورحمة الله وبركاته. الكود الذي قمت بكتابته صحيح ويعمل بشكل جيد لا توجد به مشكلة ولكن يمكن تحسينه من حيث الأسلوب وأيضا طريقة اتجاه الحلقة الخارجية حيث هذا ليس خطأ ولكنه أقل إستخدام في تطبيق Bubble Sort حيث الطريقة التقليدية تبدأ من 0 إلى LEN-1 مما يجعل الكود أكثر قابلية للقراءة. وإليك الكود بعد تحسين بعض الأشياء فيه : #include <iostream> using namespace std; #define LEN 7 int main() { int numbers[LEN] = {1, 2, 5, 4, 7, 9, 3}; // Bubble Sort for (int i = 0; i < LEN - 1; i++) { bool swapped = false; // متغير لتتبع حدوث التبديل for (int j = 0; j < LEN - 1 - i; j++) { if (numbers[j] > numbers[j + 1]) { // تبديل العناصر int tmp = numbers[j]; numbers[j] = numbers[j + 1]; numbers[j + 1] = tmp; swapped = true; } } // إذا لم يحدث أي تبديل، فالمصفوفة مرتبة if (!swapped) break; } // طباعة المصفوفة المرتبة for (int i = 0; i < LEN; i++) { cout << numbers[i] << " "; } cout << endl; return 0; } حيث قمت بتغيير اتجاه الحلقة الخارجية فإستخدمت i من 0 حتى LEN-1 بدلا من العكس مما يتماشى مع الطريقة التقليدية ل Bubble Sort. زأيضا قمت بتغيير اسماء المتغيرات ليكون الاسم أكثر وضوح واستخدمت نوع bool بدل من int. وفي النهاية قمت بإضافة return 0 حيث من الجيد إنهاء الدالة main بإرجاع 0 لتدل على نجاح تنفيذ البرنامج. 1 اقتباس
0 Abdelrehman Elsied نشر 7 أغسطس الكاتب أرسل تقرير نشر 7 أغسطس بتاريخ 7 دقائق مضت قال محمد_عاطف: وعليكم السلام ورحمة الله وبركاته. الكود الذي قمت بكتابته صحيح ويعمل بشكل جيد لا توجد به مشكلة ولكن يمكن تحسينه من حيث الأسلوب وأيضا طريقة اتجاه الحلقة الخارجية حيث هذا ليس خطأ ولكنه أقل إستخدام في تطبيق Bubble Sort حيث الطريقة التقليدية تبدأ من 0 إلى LEN-1 مما يجعل الكود أكثر قابلية للقراءة. وإليك الكود بعد تحسين بعض الأشياء فيه : #include <iostream> using namespace std; #define LEN 7 int main() { int numbers[LEN] = {1, 2, 5, 4, 7, 9, 3}; // Bubble Sort for (int i = 0; i < LEN - 1; i++) { bool swapped = false; // متغير لتتبع حدوث التبديل for (int j = 0; j < LEN - 1 - i; j++) { if (numbers[j] > numbers[j + 1]) { // تبديل العناصر int tmp = numbers[j]; numbers[j] = numbers[j + 1]; numbers[j + 1] = tmp; swapped = true; } } // إذا لم يحدث أي تبديل، فالمصفوفة مرتبة if (!swapped) break; } // طباعة المصفوفة المرتبة for (int i = 0; i < LEN; i++) { cout << numbers[i] << " "; } cout << endl; return 0; } حيث قمت بتغيير اتجاه الحلقة الخارجية فإستخدمت i من 0 حتى LEN-1 بدلا من العكس مما يتماشى مع الطريقة التقليدية ل Bubble Sort. زأيضا قمت بتغيير اسماء المتغيرات ليكون الاسم أكثر وضوح واستخدمت نوع bool بدل من int. وفي النهاية قمت بإضافة return 0 حيث من الجيد إنهاء الدالة main بإرجاع 0 لتدل على نجاح تنفيذ البرنامج. صحيح. شرط الحلقه صار اسهل في الفهم. شيئ اخير من فضلك. اشرح لي منطق خوارزميه insertion sort لانني لا افهمه. و شكرا علي مجهودكم اقتباس
0 Mustafa Suleiman نشر 8 أغسطس أرسل تقرير نشر 8 أغسطس بتاريخ 5 ساعة قال Abdelrehman Elsied: صحيح. شرط الحلقه صار اسهل في الفهم. شيئ اخير من فضلك. اشرح لي منطق خوارزميه insertion sort لانني لا افهمه. و شكرا علي مجهودكم أسهل طريقة لاستيعابها هي بتخيل أنك ترتب أوراق اللعب في يدك، كالتالي: في البداية بين يديك مجموعة من الأوراق غير المرتبة. تسحب أول ورقة وتعتبرها الجزء المرتب لأن ورقة واحدة هي دائمًا مرتبة. الآن، تسحب الورقة الثانية من الجزء غير المرتب تقارنها بالورقة الأولى التي في الجزء المرتب ولو أصغر، تضعها قبلها، وبذلك لديك ورقتان مرتبتان في يدك. تسحب الورقة الثالثة وتقارنها بالورقتين المرتبتين من اليمين إلى اليسار، ولو أكبر من كليهما، تتركها في مكانها، ولو أصغر، تستمر في مقارنتها حتى تجد مكانها الصحيح، وتُزيح الأوراق الأخرى لتوفير مساحة لها. تكرر تلك العملية أي تسحب ورقة جديدة من الجزء غير المرتب، وتُدرجها Insert في مكانها الصحيح داخل الجزء المرتب. أي الفكرة من Insertion Sort هو بناء قائمة مرتبة بشكل تدريجي، عنصر تلو الآخر. اقتباس
0 مصطفى الغايش نشر 23 أغسطس أرسل تقرير نشر 23 أغسطس انت محتاج قليل من تعلم الخوارزميات بشكل أحترافى البرمجة والخوارزميات والأنظمة العددية اقتباس
السؤال
Abdelrehman Elsied
سلام عليكم.
حاولت تطبيق خوارزميه ال Bubble Sort بلغه ال C++.
هل هذا الكود صحيح.
4 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.