首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

插入排序代码实现思路解决思路

2012-03-23 
插入排序代码实现思路求插入排序代码实现思路,急急急!!![解决办法]1.直接插入排序的基本思想直接插入排序(

插入排序代码实现思路
求插入排序代码实现思路,急急急!!!

[解决办法]
1.直接插入排序的基本思想
直接插入排序(Straight Insertion Sorting)的基本思想是:把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,将它插入到有序表中的适当位置,使之成为新的有序表,重复n-1次可完成排序过程。

Java code
package test;import java.util.Arrays;public class Test {    public static void main(String[] args) {        int a[] = {1,5,2,6,8,3,10,20,11,0,-5};        insertSort(a);        System.err.println(Arrays.toString(a));    }        public static void insertSort(int[] a) {        int j, tmp;        for (int i=1; i<a.length; i++) { //i表示插入次数,共进行n-1次插入            tmp = a[i]; //把待排序元素赋给tmp            j = i - 1;            while ((j >= 0) && (tmp < a[j]))            {                a[j+1] = a[j];                j--;             }            a[j+1]=tmp;        }    }}
[解决办法]
研究完这个,楼主可以进一步研究折半插入排序。呵呵,其乐无穷。。。
[解决办法]
Java code
import java.util.Arrays;public class Test {    public static void shiftOneElementToRight(int[] array, int start, int last) {        for (int i = last; i >= start; --i) {            array[i + 1] = array[i];        }    }    public static void insertSort(int[] array) {        // i = 1,表示从第2个数开始进行插入排序,因为第1个元素认为是已经排好序的        for (int i = 1; i < array.length; ++i) {            int n = array[i];            for (int j = 0; j < i; ++j) {                // array[i]与它前面的所有数比较,如果array[j]比它大,                // 则[j, i-1]之间的数都向后移动一个位置,然后array[j]插入原来的array[i]                if (n < array[j]) {                    shiftOneElementToRight(array, j, i - 1);                    array[j] = n;                    break;                }            }        }    }    public static void main(String[] args) {        int[] array = { 2, 3, 5, 4, 4, 1 };        insertSort(array);        System.out.println(Arrays.toString(array));    }} 

热点排行
Bad Request.