Java直接插入排序
2014-01-03 11:06
197 查看
Java直接插入排序
直接插入排序算法详解:/article/1523575.html
直接插入算法源码免积分下载:http://download.csdn.net/detail/ysjian_pingcx/6802851
序:一个爱上Java最初的想法一直没有磨灭:”分享我的学习成果,不管后期技术有多深,打好基础很重要“。
声明:所有源码经由本人原创,上道者皆似曾相识,另未经过权威机构或人士审核和批准,勿做商业用途,仅供学习分享,若要转载,请注明出处。
工具类Swapper,后期算法会使用这个工具类:
直接插入排序算法详解:/article/1523575.html
直接插入算法源码免积分下载:http://download.csdn.net/detail/ysjian_pingcx/6802851
直接插入排序算法详解:/article/1523575.html
直接插入算法源码免积分下载:http://download.csdn.net/detail/ysjian_pingcx/6802851
序:一个爱上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 * @csdnBlog http://blog.csdn.net/ysjian_pingcx * @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)); } }
直接插入排序算法详解:/article/1523575.html
直接插入算法源码免积分下载:http://download.csdn.net/detail/ysjian_pingcx/6802851
相关文章推荐
- 排序算法之直接插入排序-Java-version
- 【Java常用排序算法】插入排序(直接插入排序、希尔排序)
- 直接插入排序(JAVA实现)
- Java使用二分插入排序竟然和直接插入排序速度相差不多
- 冒泡,简单选择,直接插入排序(Java版)
- java排序之插入排序(直接插入排序和希尔排序)
- 直接插入排序(JAVA实现)
- [java]直接插入排序
- 插入排序----直接插入排序----java实现
- Lesson_for_java_day07--java中数组的定义及常见排序方法--冒泡法、简单选择法、直接插入法和调用方法排序
- Java学习-插入排序1-直接插入排序
- 直接插入排序的 Java实现
- Java 八大排序之——直接插入排序
- 排序算法总结(一)---- 直接插入排序,希尔排序(java实现)
- 程序员必知的8大排序(一)-------直接插入排序,希尔排序(java实现)
- 直接插入排序,希尔排序(java实现)
- 数据结构算法之排序系列Java、C源码实现(1)--直接插入排序
- Java直接插入排序
- 插入排序之直接希尔排序Java实现
- java之直接插入排序