مشاركة: اريييد دالة الترتييب
من عيوني :-)
حاليا خوارزمك يستخدم عملية المقارنة لترتيب الارقام, اكبر من > , اصغر من < , و يعادل =.
كل تلك العمليات تقارن رقمين وتجيب ب"صح" اذا صحت نتيجة العملية, او ب"خطأ" اذا كانت النتيجة خاطئة. يمكننا ان نستخدم عمليات مقارنة تشابه تلك لنقارن بين نصين. نقول ان نصان متطابقان اذا كانا يحتويان على نفس الحروف وبنفس الترتيب. ونقول ان احدهم اكبر من الاخر اذا كان يسبقه ابجديا حسب ترتيب القاموس, اي ان النص "الاكبر" يحتوي على حروف "اصغر". المقانة القاموسية تقارن نصين ابتداء من اول حرف, لذا النص اكبر من نص اّخر اذا كان يسبقه ابجديا, مثلا:
عبارة "ابجد" اكبر من عبارة "هوز", لان الالف يسبق الهاء ابجديا. وعبارة "شبيك" اكبر من عبارة "شبيك لبيك" مع ان الاولى بالفعل تعتبر جزئية من الثانية, الا ان حسب الترتيب القاموسي, الكلمة الاولى تظهر اولا.
لاستخدام عملية المقارنة الابجدية القاموسية على نصين, استخدم دالة compareTo التي في فئة String, فهي تقارن نصين وتعيد رقما سلبيا, اي اصغر من صفر, اذا كان النص الاول يسبق الاّخر ابجديا. وتعيد رقما ايجابيا, اكثر من صفر, اذا كان الرقم الاول يتلو الثان ابجديا. و تعيد صفر اذا تطابق النصان بالحرف.
اذا تريدين مقارنة نصان لاتينيان وبدون مراعاة للمقام, اي تريدين ان لا تفرقي A من a, فحبنها يمكنك استخدام compareToIgnoreCase, وهذه الدالة ايضا في فئة String.
تعديل بسيط لخوارزمك, غيري كل عملية مقارنة رقمية الى String.compareTo وغيري المتغيرات المحلية في دالة selectionsort من نوع double الى String.
للمزيد من المعلومات:
http://www.infres.enst.fr/docs/jdk1.4.0/api/java/lang/String.html#compareTo(java.lang.String)
مشاركة: اريييد دالة الترتييب
اذا انتي تستخدمين متغير من نوع string فاستخدامه يكون مثل اللintعادي لانه له overloadللعمليات كلها <و>وغيرها
لكن لو استخدمتي charفلازم تقارنين حرف حرف