collections.sort ()
يمكن تنفيذ فرز Java باستخدام collectileos.sort ().
هناك طريقتان لفرز القائمة باستخدام طريقة المجموعة.
الأول هو الكائن في القائمة لتنفيذ الواجهة المماثلة ، على النحو التالي:
! name ؛} integer getRder () {return order ؛} public void setorder (integer order) {this.order = order ؛} public int compareto (user arg0) {rn this.getorder (). ) ؛}} امتحان:
الفئة العامة {public static void (string [] {user user1 = new user () ؛ ) ؛ (قائمة) ؛ نتيجة الإخراج على النحو التالي
أب
الطريقة الثانية هي تحقيقها بناءً على طريقة التحميل للمجموعات.
! ترتيب الإرجاع ؛} public void setorder (integer order) {this.order = order ؛}}} اكتب في الفصل الرئيسي ::
الفئة العامة {public static void (string [] {user user1 = new user () ؛ ) ؛ int conting (user ars0 ، user arg1) {return arg0.getorder (). getName ()) ؛}}} نتيجة الإخراج على النحو التالي
أب
بنية الكود السابقة بسيطة ، ولكن يمكن فرزها فقط وفقًا للسمات الثابتة.
اختر الأفضل.
خوارزمية الفرز الشائعة
دعونا نلقي نظرة على ممارسة كود Java مع العديد من خوارزميات الفرز الكلاسيكية:
فرز الفقاعة
Public Static Void Bubblesort (int a [] ، int n) {int i ، j ؛ J ++) {if (a [j]> a [j + 1]) {a [j] = a [j] ^ a [j + 1] ؛ [J + 1] ؛أدخل مباشرة
public static void esertsort (int a [] ، int n) {int i ، j ، tmp ؛ ؛ ؛}}}اختر مباشرة
selectsors static static static (int a [] ، int n) {int i ، j ، local ؛ n ؛ [loc] = a [i] ^ a [loc] ؛فرز
/ ** * نوع الكومة (من صغير إلى كبير) * * * param a * param n */ public static void Heapsort (int a [] ، int n) {int tmp ؛ N) ؛ 0 ، j) ؛}} / ** * قم بإنشاء الكثير من الجذور * * * * * * param a * param n * / private static void buildmaxheap (int a [] ، int n) {for (int i = ((( n -2) / 2 ؛ i * @param n * / private static void maxheapify (int a [] ، int i ، int n) {int left ، rocal ، on {left = 2 * i + 1 ؛ i + 2 ؛ ؛} if (loc! = i) {a [i] = a [loc] ^ a [i] ؛ a [i] ؛} آخر {break ؛}}}فرز سريع
Quicksort Quicksort static static (int a [] ، int ed) 1 ، ed) ؛}} swapvar private static void (int a [] ، int bt ، int ed) {int mid = bt + (ed -bt) / 2 ؛ ) = a [bt] ^ a [mid] ؛ bt ، int ed) ed) {بينما (bt <ed && a [ed]> = stand) {ed- ؛} if (bt <ed) {a [bt ++] = a [ed] ؛ bt ++ ؛} if (bt <ed) {a [eds ---] = a [bt] ؛} [bt] = state ؛دمج
public static void mergesort (int a [] ، int bt) {if (bt <ed) {int mid = bt + (ed -bt) / 2 ؛ ed) ؛ ؛ = A [j]) {tmp [k] = a [i ++] ؛} آخر {tmp [k] = a [j ++] ؛ ] = a [j ++] ؛} لـ (i = 0 ؛ i <k ؛ i ++) {a [bt+i] = tmp [i] ؛}}برنامج الاختبار
تعال وتلخيص الخوارزمية أعلاه:
استيراد java.util.scanner ؛ cin.nextint () ؛ ؛ ** * دمج الفرز * * * param a * param bt * param eds * / public static void memort (int a [] ، int bt ، int ed) {if <ed) {int mid = bt + (ed -BT) / 2 ؛ param bt * param mid * param ed */ private static void mergearray (int a [] ، int bt ، int mid ، int ed) {int i ، j ، k ، len = ed -bt + 1 ؛ TMP [] = new int [len] ؛ <= a [j]) {tmp [k] = a [i ++] ؛} آخر {tmp [k] = a [j ++] ؛}} بينما (i <= mid) {tmp [k ++ ] = a [i ++] ؛} بينما (j <= ed) {tmp [k ++] = a [j ++] ؛} لـ (i = 0 ؛ i <k ؛ i ++) {a [a [ bt+i] = tmp [i] ؛} / ** * بسرعة الفرز * * * param a * param bt * param ed * / public static void Quicksort (int a [] ، int bt ، int ed) { if (bt <ed) {int pivot) = pivotpartition (a ، bt ، ed) ؛ A [] ، int bt ، int ed) {int mid = bt + (ed -bt) / 2 ؛ ] = a [bt] [mid] ؛ param eds * @regurn */ private static int pivotpartition (int a [] ، int bt ، int ed) {// خذ القيمة الوسيطة كموقف لمنع الصفيف في مظهر منظم o (n^2) swapvar (a ، BT ، ed) ؛ +] = a [ed] ؛} بينما (bt <ed && a [bt] <= stand) {bt ++ ؛} if (bt <ed) {a [eds ---] = a [bt] ؛} A [bt] = stand ؛ ) {int tmp ؛ [j] ؛ [] ، int n) {for (int i = (n -2) / 2 ؛ i> = 0 ؛ i-) {maxheapify (a ، i ، n) ؛} / ** من العرض i * * * * param a * param n * / private static void maxheapify (int a [] ، int i ، 2 * i + 1 ؛ ]) {i = right ؛} if (loc! = i) {a [a) i] = a [loc] ^ a [i] ؛ i] = a [loc] ^ a [i] ؛} else {break ؛}}}}} / ** * حدد الفرز مباشرة * * * param a * param n * / public static void selectSort (int a [ ] ، int n) {int i ، j ، local ؛ (a [j] <a [loc]) {loc = j ؛}} if (loc! = i) {a) {a) [i] = a [i] ^ a [loc] ؛ A [i] ^ a [loc] ؛ (int a [] ، int n) {int i ، j ، tmp ؛ 0 ؛ SITE * * * param a * param n * / public static void bubblesort (int a [] ، int n) {int i ، j ؛ (j = 0 ؛ j <n -i -1 ؛ j ++) {if (a [j]> a [j +1]) {a [a j] = a [j] ^ a [j + 1] ؛ * param a * / public static void printarr (int a []) {for (int i = 0 ؛ i <.length ؛ i ++) {if (i == A.Length -1) {system.out. printf ("٪ d/n" ، a [i]) ؛} آخر {system.out.printf ("٪ d" ، a [i]) ؛}}}}}}