مقدمة: لم يتم نسيان الفكرة الأصلية للوقوع في حب Java أبدًا: "مشاركة نتائج التعلم الخاصة بي، بغض النظر عن مدى عمق التكنولوجيا اللاحقة، من المهم وضع أساس جيد."
فئة الأداة Swapper، سيتم استخدام فئة الأداة هذه في الخوارزميات اللاحقة:
انسخ رمز الكود كما يلي:
package com.meritit.sortord.util;
/**
* أداة واحدة لتبديل عنصر السحب في المصفوفة
*
* @المؤلف يسجيان
* @الإصدار 1.0
*@البريد الإلكتروني [email protected]
* @QQ 646633781
*@الهاتف 18192235667
* @csdnBlog http://blog.csdn.net/ysjian_pingcx
* @ createTime 2013-12-20
* @copyRight الاستحقاق
*/
مبادلة الطبقة العامة {
خاص سوابر () {
}
/**
* مبادلة عناصر السحب من المصفوفة
*
* @param oneIndex
* فهرس واحد
* @param AnotherIndex
* فهرس آخر
* @param array
* المصفوفة المراد تبديلها
* @exception NullPointerException
* إذا كانت المصفوفة فارغة
*/
ثابت عام <T يمتد قابل للمقارنة<T>> مبادلة باطلة (int oneIndex،
إنت آخرإندكس، T[] صفيف) {
إذا (صفيف == فارغ) {
رمي NullPointerException الجديد("إدخال قيمة فارغة");
}
checkIndexs(oneIndex, AnotherIndex, array.length);
T temp = array[oneIndex];
array[oneIndex] = array[anotherIndex];
array[anotherIndex] = temp;
}
/**
* مبادلة عناصر السحب من المصفوفة
*
* @param oneIndex
* فهرس واحد
* @param AnotherIndex
* فهرس آخر
* @param array
* المصفوفة المراد تبديلها
* @exception NullPointerException
* إذا كانت المصفوفة فارغة
*/
مبادلة باطلة ثابتة عامة (int oneIndex، int AnotherIndex، int[] array) {
إذا (صفيف == فارغ) {
رمي NullPointerException الجديد("إدخال قيمة فارغة");
}
checkIndexs(oneIndex, AnotherIndex, array.length);
int temp = array[oneIndex];
array[oneIndex] = array[anotherIndex];
array[anotherIndex] = temp;
}
/**
* التحقق من الفهرس ما إذا كان في الترتيب
*
* @param oneIndex
* فهرس واحد
* @param AnotherIndex
* فهرس آخر
* @param arrayLength
* طول المصفوفة
* @exception IllegalArgumentException
* إذا كان الفهرس خارج النطاق
*/
checkIndexs باطلة ثابتة خاصة (int oneIndex، int AnotherIndex،
طول المصفوفة int) {
if (oneIndex < 0 || AnotherIndex < 0 || oneIndex >= arrayLength
||.otherIndex >= arrayLength) {
رمي IllegalArgumentException جديد (
"الوسائط غير القانونية لفهارس السحب [" + oneIndex + "،"
+oneIndex+ "]");
}
}
}
فرز الإدراج المباشر، InsertionSord:
انسخ رمز الكود كما يلي:
الحزمة com.meritit.sortord.insertion;
/**
* ترتيب فرز الإدراج، والتعقيد الزمني هو O(n2)
*
* @المؤلف يسجيان
* @الإصدار 1.0
*@البريد الإلكتروني [email protected]
* @QQ 646633781
*@الهاتف 18192235667
* @csdnBlog http://blog.csdn.net/ysjian_pingcx
* @ createTime 2013-12-31
* @copyRight الاستحقاق
* @ منذ 1.5
*/
الفئة العامة InsertionSord {
InsertionSortord INSTANCE النهائي الثابت الخاص = new InsertionSortord();
إدراج خاص () {
}
/**
* احصل على مثيل InsertionSord، مثيل واحد فقط
*
* @return المثيل الوحيد
*/
public static InsertionSortord getInstance() {
حالة الإرجاع؛
}
/**
* قم بفرز مصفوفة <code>int</code> بترتيب فرز الإدراج
*
* @param array
* مجموعة int
*/
public void doSort(int...ray) {
إذا (صفيف != فارغ && array.length > 0) {
int length = array.length;
// يبدأ التداول عند 1، وقيمة الفهرس 0 هي المرجع
لـ (int i = 1; i < length; i++) {
إذا (صفيف[i] <صفيف[i - 1]) {
// إذا كانت القيمة في الفهرس i أقل من القيمة في الفهرس i-1
int vacancy = i; // سجل الوظيفة الشاغرة كـ i
// قم بتعيين الحارس كقيمة في الفهرس i
int Sentry = array[i];
// تداول المفاتيح، من الفهرس i-1،
لـ (int j = i - 1; j >= 0; j--) {
إذا (صفيف [ي] > خفير) {
/*
* إذا تجاوزت قيمة الفهرس الحالية
* الحارس، ثم التحرك إلى الوراء، قم بتعيين سجل جديد
* وظيفة شاغرة كـ j
*/
المصفوفة[j + 1] = المصفوفة[j];
شاغر = ي؛
}
}
// اضبط الحارس على الوظيفة الشاغرة الجديدة
array[vacancy] = حارس;
}
}
}
}
/**
* قم بفرز مصفوفة <code>T</code> العامة بترتيب فرز الإدراج
*
* @param array
* مجموعة عامة
*/
عامة <T يمتد Comparable<T>> void doSortT(T[] array) {
إذا (صفيف != فارغ && array.length > 0) {
int length = array.length;
لـ (int i = 1; i < length; i++) {
إذا (array[i].compareTo(array[i - 1]) < 0) {
T Sentry = array[i];
int شاغر = i;
لـ (int j = i - 1; j >= 0; j--) {
إذا (array[j].compareTo(sentry) > 0) {
المصفوفة[j + 1] = المصفوفة[j];
شاغر = ي؛
}
}
array[vacancy] = حارس;
}
}
}
}
}
اختبار اختبار الإدراج:
انسخ رمز الكود كما يلي:
الحزمة com.meritit.sortord.insertion;
استيراد java.util.Arrays؛
/**
* اختبار ترتيب فرز الإدراج
*
* @المؤلف يسجيان
* @الإصدار 1.0
*@البريد الإلكتروني [email protected]
* @QQ 646633781
*@الهاتف 18192235667
* @ createTime 2013-12-31
* @copyRight الاستحقاق
*/
الطبقة العامة TestInsertionSord {
public static void main(String[] args) {
InsertionSortord InsertSort = InsertionSortord.getInstance();
int[] array = { 3, 5, 4, 2, 6 };
System.out.println(Arrays.toString(array));
InsertSort.doSort(array);
System.out.println(Arrays.toString(array));
System.out.println("---------------");
Integer[] array1 = { 3, 5, 4, 2, 6 };
System.out.println(Arrays.toString(array1));
InsertSort.doSortT(array1);
System.out.println(Arrays.toString(array1));
}
}