亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

Java直接插入排序算法實現

2019-11-26 15:48:45
字體:
來源:轉載
供稿:網友

序:一個愛上Java最初的想法一直沒有磨滅:”分享我的學習成果,不管后期技術有多深,打好基礎很重要“。

工具類Swapper,后期算法會使用這個工具類:

復制代碼 代碼如下:

package com.meritit.sortord.util;

/**
 * One util to swap tow element of Array
 *
 * @author ysjian
 * @version 1.0
 * @email ysjian_pingcx@126.com
 * @QQ 646633781
 * @telephone 18192235667
 * @csdnBlog http://blog.csdn.net/ysjian_pingcx
 * @createTime 2013-12-20
 * @copyRight Merit
 */
public class Swapper {

 private Swapper() {

 }

 /**
  * Swap tow elements of the array
  *
  * @param oneIndex
  *            one index
  * @param anotherIndex
  *            another index
  * @param array
  *            the array to be swapped
  * @exception NullPointerException
  *                if the array is null
  */
 public static <T extends Comparable<T>> void swap(int oneIndex,
   int anotherIndex, T[] array) {
  if (array == null) {
   throw new NullPointerException("null value input");
  }
  checkIndexs(oneIndex, anotherIndex, array.length);
  T temp = array[oneIndex];
  array[oneIndex] = array[anotherIndex];
  array[anotherIndex] = temp;
 }

 /**
  * Swap tow elements of the array
  *
  * @param oneIndex
  *            one index
  * @param anotherIndex
  *            another index
  * @param array
  *            the array to be swapped
  * @exception NullPointerException
  *                if the array is null
  */
 public static void swap(int oneIndex, int anotherIndex, int[] array) {
  if (array == null) {
   throw new NullPointerException("null value input");
  }
  checkIndexs(oneIndex, anotherIndex, array.length);
  int temp = array[oneIndex];
  array[oneIndex] = array[anotherIndex];
  array[anotherIndex] = temp;
 }

 /**
  * Check the index whether it is in the arrange
  *
  * @param oneIndex
  *            one index
  * @param anotherIndex
  *            another index
  * @param arrayLength
  *            the length of the Array
  * @exception IllegalArgumentException
  *                if the index is out of the range
  */
 private static void checkIndexs(int oneIndex, int anotherIndex,
   int arrayLength) {
  if (oneIndex < 0 || anotherIndex < 0 || oneIndex >= arrayLength
    || anotherIndex >= arrayLength) {
   throw new IllegalArgumentException(
     "illegalArguments for tow indexs [" + oneIndex + ","
       + oneIndex + "]");
  }
 }
}

直接插入排序,InsertionSortord:

復制代碼 代碼如下:

package com.meritit.sortord.insertion;

/**
 * Insertion sort order, time complexity is O(n2)
 *
 * @author ysjian
 * @version 1.0
 * @email ysjian_pingcx@126.com
 * @QQ 646633781
 * @telephone 18192235667
 * @csdnBlog http://blog.csdn.net/ysjian_pingcx
 * @createTime 2013-12-31
 * @copyRight Merit
 * @since 1.5
 */
public class InsertionSortord {

 private static final InsertionSortord INSTANCE = new InsertionSortord();

 private InsertionSortord() {
 }

 /**
  * Get the instance of InsertionSortord, only just one instance
  *
  * @return the only instance
  */
 public static InsertionSortord getInstance() {
  return INSTANCE;
 }

 /**
  * Sort the array of <code>int</code> with insertion sort order
  *
  * @param array
  *            the array of int
  */
 public void doSort(int... array) {
  if (array != null && array.length > 0) {
   int length = array.length;

   // the circulation begin at 1,the value of index 0 is reference
   for (int i = 1; i < length; i++) {
    if (array[i] < array[i - 1]) {

     // if value at index i is lower than the value at index i-1
     int vacancy = i; // record the vacancy as i

     // set a sentry as the value at index i
     int sentry = array[i];

     // key circulation ,from index i-1 ,
     for (int j = i - 1; j >= 0; j--) {
      if (array[j] > sentry) {
       /*
        * if the current index value exceeds the
        * sentry,then move backwards, set record the new
        * vacancy as j
        */
       array[j + 1] = array[j];
       vacancy = j;
      }
     }
     // set the sentry to the new vacancy
     array[vacancy] = sentry;
    }
   }
  }
 }

 /**
  * Sort the array of generic <code>T</code> with insertion sort order
  *
  * @param array
  *            the array of generic
  */
 public <T extends Comparable<T>> void doSortT(T[] array) {
  if (array != null && array.length > 0) {
   int length = array.length;
   for (int i = 1; i < length; i++) {
    if (array[i].compareTo(array[i - 1]) < 0) {
     T sentry = array[i];
     int vacancy = i;
     for (int j = i - 1; j >= 0; j--) {
      if (array[j].compareTo(sentry) > 0) {
       array[j + 1] = array[j];
       vacancy = j;
      }

     }
     array[vacancy] = sentry;
    }
   }
  }
 }
}

測試TestInsertionSortord:

復制代碼 代碼如下:

package com.meritit.sortord.insertion;

import java.util.Arrays;

/**
 * Test insertion sort order
 *
 * @author ysjian
 * @version 1.0
 * @email ysjian_pingcx@126.com
 * @QQ 646633781
 * @telephone 18192235667
 * @createTime 2013-12-31
 * @copyRight Merit
 */
public class TestInsertionSortord {

 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));
 }
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人乱色短篇合集| 51色欧美片视频在线观看| 欧美性极品少妇精品网站| 久久夜精品香蕉| 国产成人一区二| 欧美激情亚洲国产| 国内偷自视频区视频综合| 欧美在线视频免费观看| 91色琪琪电影亚洲精品久久| 国产美女主播一区| 亚洲影影院av| 欧美老女人性视频| 中文日韩在线观看| 欧美激情在线有限公司| 一区二区亚洲欧洲国产日韩| 久热精品视频在线| 欧美视频裸体精品| 久久久久久久久久国产| 国产91热爆ts人妖在线| 国产亚洲欧美一区| 2019亚洲日韩新视频| 日韩欧美在线看| 日韩中文视频免费在线观看| 亚洲美女自拍视频| 欧美成人精品一区二区| 国产精品成熟老女人| 一区二区三区视频观看| 精品亚洲永久免费精品| 国产精品成人免费电影| 中文字幕亚洲一区| 夜夜嗨av色一区二区不卡| 青青草原成人在线视频| 91av在线播放视频| 91免费精品国偷自产在线| 亚洲美女av电影| 欧美电影《睫毛膏》| 欧美一区二区三区免费视| 国产欧美在线视频| 亚洲精选在线观看| 韩曰欧美视频免费观看| 亚洲国产精品yw在线观看| 国产精品久久99久久| 91在线观看免费高清完整版在线观看| 亚洲男人天堂网| 日韩高清a**址| 狠狠色香婷婷久久亚洲精品| 成人乱人伦精品视频在线观看| 日日摸夜夜添一区| 国产精品三级网站| 57pao成人国产永久免费| 久久免费成人精品视频| 亚洲欧洲在线观看| 视频在线一区二区| 日日狠狠久久偷偷四色综合免费| 成人免费福利视频| 日韩亚洲成人av在线| 狠狠久久五月精品中文字幕| 久久久人成影片一区二区三区| 亚洲综合中文字幕在线观看| 欧美高清视频在线播放| 7777精品视频| 欧美成人精品在线视频| 91九色国产视频| 久久久亚洲精选| 色琪琪综合男人的天堂aⅴ视频| 成人国产亚洲精品a区天堂华泰| 欧美天天综合色影久久精品| 国产一区红桃视频| 日韩成人在线观看| 精品网站999www| 亚洲国产成人精品久久久国产成人一区| 欧美亚洲免费电影| 中文字幕不卡av| 国产日韩在线亚洲字幕中文| 亚洲日韩第一页| 亚洲女人被黑人巨大进入al| 国产视频久久久久久久| xxx成人少妇69| 欧美精品电影在线| 亚洲精品国产福利| 精品高清一区二区三区| 欧美专区在线视频| 国产在线精品成人一区二区三区| 日韩欧美国产激情| 热久久免费视频精品| 国产亚洲欧美另类中文| 九九精品在线播放| 黑人狂躁日本妞一区二区三区| 国产一区二区三区四区福利| 久久免费视频在线观看| 久久久91精品| 亚洲精品国偷自产在线99热| 黑人与娇小精品av专区| 日韩最新av在线| 久久久久久尹人网香蕉| 一区二区国产精品视频| 亚洲午夜激情免费视频| 欧美极品少妇全裸体| 亚洲一区二区三区久久| 中文字幕一区二区精品| 插插插亚洲综合网| 亚洲xxxxx性| 久久亚洲影音av资源网| 亚洲黄色在线看| 中文字幕免费精品一区高清| 97国产suv精品一区二区62| 亚洲老头老太hd| 欧美日韩亚洲视频| 国精产品一区一区三区有限在线| 日韩中文在线不卡| 久久福利视频导航| 欧美成人精品在线观看| 色婷婷av一区二区三区在线观看| 亚洲一区免费网站| 在线精品国产成人综合| 国产精品久久不能| 91精品视频播放| 日韩av电影手机在线| 成人激情电影一区二区| 久久久免费高清电视剧观看| 韩国国内大量揄拍精品视频| 一区二区三区日韩在线| 一本色道久久88综合亚洲精品ⅰ| 日韩禁在线播放| 亚洲欧洲日韩国产| 午夜精品美女自拍福到在线| 国产精品一区二区三区久久| 黄色成人在线免费| 91中文精品字幕在线视频| 欧美性视频在线| 国产精品久久久久久久久久久不卡| 欧美日韩成人黄色| 久久99国产精品久久久久久久久| 91精品国产91久久久久福利| 国产丝袜精品第一页| 国产成人一区二区三区小说| 亚洲片国产一区一级在线观看| 久久久久久久久久久网站| 色视频www在线播放国产成人| 国产精品久久久久久一区二区| 亚洲欧美日韩精品久久亚洲区| 色悠悠国产精品| 亚洲最大激情中文字幕| 黄色一区二区三区| 久久香蕉国产线看观看网| 国产一区二区三区18| 欧美日韩黄色大片| 4388成人网| 亚洲欧美综合区自拍另类| 国模精品视频一区二区| 欧美理论电影在线播放| 日韩高清人体午夜| www.久久久久| 国产精品美女免费视频| 欧美日韩精品国产| 成人两性免费视频| 日韩精品免费在线视频| 久久黄色av网站| 中文字幕久久久av一区| 亚洲级视频在线观看免费1级| 欧美性色视频在线| 久久九九精品99国产精品| 欧美视频在线看| 欧美极品少妇xxxxⅹ喷水|