تلخص فئة الأدوات لفترة وجيزة وبوضوح خمس خوارزميات فرز من Java: الفرز السريع ، فرز التل ، فرز الإدراج ، فرز الكومة ، ودمج الفرز. لا يوجد تفسير لخوارزميات الفرز هذه في الكود. آمل أن أتحقق من التعليمات ذات الصلة لجزء التفكير بنفسي. هنا سألخص فقط هذه الخوارزميات ليستخدمها الجميع.
نوع الطبقة العامة {public static <anytype يمتد قابلة للمقارنة <؟ super anytype >> void insertionSort (anytype [] a) {insertionSort (a ، 0 ، a.length - 1) ؛ } ثابت خاص <anytype يمتد قابلة للمقارنة <؟ super anytype >> void insertionSort (anytype [] a ، int left ، int erit) {int j ؛ . لـ (j = p ؛ j> left && tmp.compareto (a [j - 1]) <0 ؛ j--) {a [j] = a [j - 1] ؛ } a [j] = tmp ؛ }} ثابت عام <anytype يمتد قابلة للمقارنة <؟ super anytype >> void shellsort (anytype [] arr) {int j ؛ لـ (int gap = arr.length / 2 ؛ gap> 0 ؛ gap / = 2) {for (int i = gap ؛ i <arr.length ؛ i ++) {anytype tmp = arr [i] ؛ لـ (j = i ؛ j> = gap && tmp.compareto (arr [j - gap]) <0 ؛ j - = gap) {arr [j] = arr [j - gap] ؛ } arr [j] = tmp ؛ }}} private static int intchild (int i) {return i * 2 + 1 ؛ } ثابت خاص <anytype يمتد قابلة للمقارنة <؟ super anytype >> void percatedown (anytype [] arr ، int i ، int size) {anytype tmp = arr [i] ؛ لـ (int child ؛ (child = leftchild (i)) <size ؛ i = child) {if (child! = size - 1 && arr [child] .Compareto (arr [child+1]) <0) {child ++ ؛ } if (tmp.compareto (arr [child]) <0) {arr [i] = arr [child] ؛ } آخر {break ؛ }} arr [i] = tmp ؛ } ثابت عام <anytype يمتد قابلة للمقارنة <؟ super anytype >> Heapsort void (anytype [] arr) {for (int i = arr.length / 2 ؛ i> = 0 ؛ i--) {percatedown (arr ، i ، arr.length) ؛ } لـ (int i = arr.length-1 ؛ i> = 0 ؛ i--) {swapreferences (arr ، 0 ، i) ؛ percitedown (arr ، 0 ، i) ؛ }} ثابت خاص <anytype يمتد قابلة للمقارنة <؟ super anytype >> void swapreferences (anytype [] arr ، int i ، int j) {anytype tmp = arr [i] ؛ arr [i] = arr [j] ؛ arr [j] = tmp ؛ } ثابت عام <anytype يمتد قابلة للمقارنة <؟ super anytype >> void mergesort (anytype [] arr) {anytype [] tmp = ((anytype []) new المقارنة [arr.length]) ؛ mergesort (arr ، 0 ، arr.length - 1 ، tmp) ؛ } ثابت خاص <anytype يمتد قابلة للمقارنة <؟ super anytype >> void mergesort (anytype [] arr ، int start ، int end ، anytype [] tmp) {if (start <end) {int mid = (start + end) >> 1 ؛ Mergesort (arr ، start ، mid ، tmp) ؛ mergesort (arr ، mid + 1 ، end ، tmp) ؛ دمج (arr ، ابدأ ، منتصف ، نهاية ، TMP) ؛ }} ثابت خاص <anytype يمتد قابلة للمقارنة <؟ super anytype >> دمج void (anytype [] arr ، int start ، int mid ، int end ، anytype [] tmp) {int i = start ، j = mid + 1 ، k = start ؛ بينما (i <= mid && j <= end) {if (arr [i] .Compareto (arr [j]) <0) {tmp [k ++] = arr [i ++] ؛ } آخر {tmp [k ++] = arr [j ++] ؛ }} بينما (i <= mid) {tmp [k ++] = arr [i ++] ؛ } بينما (j <= end) {tmp [k ++] = arr [j ++] ؛ } لـ (int m = start ؛ m <= end ؛ m ++) {arr [m] = tmp [m] ؛ }} ثابت عام <anytype يمتد قابلة للمقارنة <؟ super anytype >> void QuickSort (anytype [] arr) {QuickSort (arr ، 0 ، arr.length - 1) ؛ } ثابت خاص <anytype يمتد قابلة للمقارنة <؟ super anytype >> void Quicksort (anytype [] arr ، int int ، int inter) {if (left + length_diff <= right) {anytype pivot = medium (arr ، land ، right) ؛ int i = اليسار ، j = يمين ؛ بينما (صحيح) {بينما (arr [++ i] .Compareto (pivot) <0) ؛ بينما (arr [-j] .Compareto (pivot)> 0) ؛ if (i <j) {swapreferences (arr ، i ، j) ؛ } آخر {break ؛ }} swapreferences (arr ، i ، right) ؛ Quicksort (arr ، اليسار ، i - 1) ؛ Quicksort (arr ، i + 1 ، يمين) ؛ } آخر {insertionSort (arr ، يسار ، يمين) ؛ }} ثابت خاص <anytype يمتد قابلة للمقارنة <؟ super anytype >> anytype mediance (anytype [] arr ، int int ، int inter) {int center = (left + right) / 2 ؛ if (arr [center] .Compareto (arr [left]) <0) {swapreferences (arr ، center ، left) ؛ } if (arr [left] .Compareto (arr [right])> 0) {swapreferences (arr ، يسار ، يمين) ؛ } if (arr [center] .Compareto (arr [right]) <0) {swapreferences (arr ، center ، right) ؛ } return arr [right] ؛ )ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.