คำนำ: แนวคิดดั้งเดิมของการตกหลุมรัก Java ไม่เคยถูกลืม: "การแบ่งปันผลการเรียนรู้ของฉันไม่ว่าเทคโนโลยีรุ่นหลังจะลึกซึ้งแค่ไหน การวางรากฐานที่ดีเป็นสิ่งสำคัญ"
คลาสเครื่องมือ Swapper คลาสเครื่องมือนี้จะใช้ในอัลกอริธึมในภายหลัง:
คัดลอกรหัสรหัสดังต่อไปนี้:
แพ็คเกจ com.meritit.sortord.util;
-
* หนึ่งยูทิลิตี้เพื่อสลับองค์ประกอบพ่วงของ Array
-
* @ผู้เขียน ysjian
* @เวอร์ชั่น 1.0
* @อีเมล [email protected]
*@QQ646633781
* @โทรศัพท์ 18192235667
* @csdnBlog http://blog.csdn.net/ysjian_pingcx
* @createTime 20-12-2556
* @copyRight บุญ.
-
Swapper ระดับสาธารณะ {
privateSwapper() {
-
-
* สลับองค์ประกอบพ่วงของอาเรย์
-
* @param oneIndex
* หนึ่งดัชนี
* @param anotherIndex
* ดัชนีอื่น
* อาร์เรย์ @param
* อาร์เรย์ที่จะสลับ
* @ข้อยกเว้น NullPointerException
* ถ้าอาร์เรย์เป็นโมฆะ
-
สาธารณะคงที่ <T ขยายการเปรียบเทียบ <T>> การแลกเปลี่ยนโมฆะ (int oneIndex,
int anotherIndex, T[] อาร์เรย์) {
ถ้า (อาร์เรย์ == null) {
โยน NullPointerException ใหม่ ("การป้อนค่า null");
-
checkIndexs (oneIndex, anotherIndex, array.length);
T temp = array[oneIndex];
array[oneIndex] = array[anotherIndex];
อาร์เรย์ [anotherIndex] = อุณหภูมิ;
-
-
* สลับองค์ประกอบพ่วงของอาเรย์
-
* @param oneIndex
* หนึ่งดัชนี
* @param anotherIndex
* ดัชนีอื่น
* อาร์เรย์ @param
* อาร์เรย์ที่จะสลับ
* @ข้อยกเว้น NullPointerException
* ถ้าอาร์เรย์เป็นโมฆะ
-
การแลกเปลี่ยนโมฆะคงที่สาธารณะ (int oneIndex, int anotherIndex, int [] อาร์เรย์) {
ถ้า (อาร์เรย์ == null) {
โยน NullPointerException ใหม่ ("การป้อนค่า null");
-
checkIndexs (oneIndex, anotherIndex, array.length);
int temp = อาร์เรย์ [oneIndex];
array[oneIndex] = array[anotherIndex];
อาร์เรย์ [anotherIndex] = อุณหภูมิ;
-
-
* ตรวจสอบดัชนีว่าอยู่ในการจัดเรียงหรือไม่
-
* @param oneIndex
* หนึ่งดัชนี
* @param anotherIndex
* ดัชนีอื่น
* @param arrayLength
* ความยาวของอาเรย์
* @ข้อยกเว้น IllegalArgumentException
* หากดัชนีอยู่นอกช่วง
-
checkIndexs โมฆะคงที่ส่วนตัว (int oneIndex, int anotherIndex,
int arrayLength) {
ถ้า (oneIndex < 0 || anotherIndex < 0 || oneIndex >= arrayLength
||. anotherIndex >= arrayLength) {
โยน IllegalArgumentException ใหม่ (
"ข้อโต้แย้งที่ผิดกฎหมายสำหรับดัชนีพ่วง [" + oneIndex + ","
+ หนึ่งดัชนี + "]");
-
-
-
การเรียงลำดับการแทรกโดยตรง การเรียงลำดับการแทรก:
คัดลอกรหัสรหัสดังต่อไปนี้:
แพ็คเกจ com.meritit.sortord.insertion;
-
* ลำดับการเรียงลำดับการแทรก ความซับซ้อนของเวลาคือ O(n2)
-
* @ผู้เขียน ysjian
* @เวอร์ชั่น 1.0
* @อีเมล [email protected]
*@QQ646633781
* @โทรศัพท์ 18192235667
* @csdnBlog http://blog.csdn.net/ysjian_pingcx
* @createTime 31-12-2556
* @copyRight บุญ.
* @ตั้งแต่ 1.5
-
การแทรกคลาสสาธารณะ {
InsertionSortord สุดท้ายแบบคงที่ส่วนตัว INSTANCE = ใหม่ InsertionSortord ();
การแทรกส่วนตัว () {
-
-
* รับอินสแตนซ์ของ InsertionSortord เพียงอินสแตนซ์เดียวเท่านั้น
-
* @return อินสแตนซ์เดียวเท่านั้น
-
สาธารณะ InsertionSortord getInstance () {
กลับอินสแตนซ์;
-
-
* เรียงลำดับอาร์เรย์ของ <code>int</code> โดยเรียงลำดับการแทรก
-
* อาร์เรย์ @param
* อาร์เรย์ของ int
-
โมฆะสาธารณะ doSort (int... อาร์เรย์) {
ถ้า (อาร์เรย์ != null && array.length > 0) {
ความยาว int = array.length;
// การหมุนเวียนเริ่มต้นที่ 1 ค่าของดัชนี 0 เป็นข้อมูลอ้างอิง
สำหรับ (int i = 1; i <ความยาว; i++) {
ถ้า (อาร์เรย์ [i] < อาร์เรย์ [i - 1]) {
// ถ้าค่าที่ดัชนี i ต่ำกว่าค่าที่ดัชนี i-1
int vacancy = i; // บันทึกตำแหน่งว่างเป็น i
// ตั้งค่ายามเป็นค่าที่ดัชนี i
int ยาม = อาร์เรย์ [i];
// การหมุนเวียนคีย์จากดัชนี i-1 ,
สำหรับ (int j = i - 1; j >= 0; j--) {
ถ้า (อาร์เรย์ [j] > ยาม) {
-
* หากค่าดัชนีปัจจุบันเกิน
* ยามแล้วถอยหลังตั้งบันทึกใหม่
*ตำแหน่งว่างในฐานะเจ
-
อาร์เรย์[เจ + 1] = อาร์เรย์[เจ];
ตำแหน่งว่าง = เจ;
-
-
// กำหนดให้ยามอยู่ในตำแหน่งที่ว่างใหม่
อาร์เรย์ [ตำแหน่งว่าง] = ยาม;
-
-
-
-
-
* จัดเรียงอาร์เรย์ของ <code>T</code> ทั่วไปโดยเรียงลำดับการแทรก
-
* อาร์เรย์ @param
* อาร์เรย์ของทั่วไป
-
สาธารณะ <T ขยายการเปรียบเทียบ <T>> เป็นโมฆะ doSortT (T [] อาร์เรย์) {
ถ้า (อาร์เรย์ != null && array.length > 0) {
ความยาว int = array.length;
สำหรับ (int i = 1; i <ความยาว; i++) {
ถ้า (อาร์เรย์ [i] .compareTo (อาร์เรย์ [i - 1]) < 0) {
T ยาม = อาร์เรย์ [i];
ตำแหน่งว่าง = i;
สำหรับ (int j = i - 1; j >= 0; j--) {
ถ้า (อาร์เรย์ [j] .compareTo (ยาม) > 0) {
อาร์เรย์[เจ + 1] = อาร์เรย์[เจ];
ตำแหน่งว่าง = เจ;
-
-
อาร์เรย์ [ตำแหน่งว่าง] = ยาม;
-
-
-
-
-
ทดสอบ ทดสอบการแทรกเรียงลำดับ:
คัดลอกรหัสรหัสดังต่อไปนี้:
แพ็คเกจ com.meritit.sortord.insertion;
นำเข้า java.util.Arrays;
-
* ทดสอบลำดับการจัดเรียงการแทรก
-
* @ผู้เขียน ysjian
* @เวอร์ชั่น 1.0
* @อีเมล [email protected]
*@QQ646633781
* @โทรศัพท์ 18192235667
* @createTime 31-12-2556
* @copyRight บุญ.
-
TestInsertionSortord คลาสสาธารณะ {
โมฆะคงที่สาธารณะ main (String [] args) {
InsertionSortord insertSort = InsertionSortord.getInstance();
int[] อาร์เรย์ = { 3, 5, 4, 2, 6 };
System.out.println(อาร์เรย์.toString(อาร์เรย์));
insertSort.doSort(อาร์เรย์);
System.out.println(อาร์เรย์.toString(อาร์เรย์));
System.out.println("---------------");
จำนวนเต็ม[] array1 = { 3, 5, 4, 2, 6 };
System.out.println(Arrays.toString(array1));
insertSort.doSortT(อาร์เรย์1);
System.out.println(Arrays.toString(array1));
-
-