غريب وحتى الفرز هو فرز أكثر تخصيصا. تتمثل الفكرة الأساسية في ترتيب تسلسلات فردية في ترتيب واحد ، وحتى التسلسلات في ترتيب واحد ، ثم تسلسلات غريبة في أخرى ، وحتى التسلسلات في ترتيب واحد حتى يتم طلب الجميع.
دعونا نعطي مثالا ،
صفيف ليتم فرزه
[6 2 4 1 5 9]
في المرة الأولى التي تقارن تسلسلًا غريبًا ، تتم مقارنة التسلسل الفردي مع تسلسل جيرانه ، مثل 6 و 2 و 4 و 1 و 5 و 9
[6 2 4 1 5 9]
بعد التبادل يصبح
[2 6 1 4 5 9]
المقارنة الثانية للأرقام الزوجية هي 6 و 1 و 5 و 5
[2 6 1 4 5 9]
بعد التبادل يصبح
[2 1 6 4 5 9]
الرحلة الثالثة هي رقم فردي ، ويتم اختيار 2 و 6 و 5 للمقارنة مع أعمدة الجوار على التوالي.
[2 1 6 4 5 9]
بعد التبادل
[1 2 4 6 5 9]
سلسلة رابعة مرقمة
[1 2 4 6 5 9]
تبادل واحد
[1 2 4 5 6 9]
تنفيذ جافا:
static void oddevensort (int [] ary) {// parity sort flag = true ؛ بينما (العلم) {boolean odd = false ، حتى = خطأ ؛ لـ (int i = 0 ؛ i <ary.length - 1 ؛ i + = 2) {if (ary [i]> ary [i + 1]) {ary [i] = ary [i + 1] + 0 * (ary [i + 1] = ary [i]) ؛ غريب = صحيح ؛ }} لـ (int i = 1 ؛ i <ary.length - 1 ؛ i + = 2) {if (ary [i]> ary [i + 1]) {ary [i] = ary [i + 1] + 0 * (ary [i + 1] = ary [i]) ؛ حتى = صحيح ؛ }} flag = odd || حتى؛ // إذا كان هذا خطأ ، فهذا يعني أنه بغض النظر عما إذا كان التسلسل الغريب أو حتى هو الحال ، فلا توجد مقارنة تلبي الشروط}} العلم أعلاه = غريب || حتى؛ له صحيح ، مما يشير إلى أنه لا يزال تبادل. في النهاية ، يكون العلم كاذبًا فقط إذا كان كل شيء خطأ.
أعد كتابته إلى العلم = ODD && حتى ؛ إذا كان هناك خطأ ، فلن يتم الانتهاء من الحلقة الكلية. مثل فرز الفقاعات ، يمكن أن تقلل آخر حلقة داخلية.