源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Java直接插入排序算法实现

  • 时间:2020-02-06 14:26 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Java直接插入排序算法实现
序:一个爱上Java最初的想法一直没有磨灭:”分享我的学习成果,不管后期技术有多深,打好基础很重要“。 工具类Swapper,后期算法会使用这个工具类:
[u]复制代码[/u] 代码如下:
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:
[u]复制代码[/u] 代码如下:
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:
[u]复制代码[/u] 代码如下:
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));  } }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部