您的位置:首页 > 其它

直接插入排序学习

2017-04-19 16:00 225 查看
直接插入排序:

1、从未排序的第一个元素开始,和前一个已排好序的元素相比较,如果小于前一个元素就交换位置,并继续与前一个元素比较,大于则跳出当前这一层的循环,这样当前元素与原来已排好序的元素,组成一个新的已经排好序的序列;(原数组包含(0~i)已排好序的序列与(i~lenght-1)未排好序的序列),(第一个元素可以看成是已排好序的序列,从第二个元素起算第一个未排好序的序列首元素);

2、循环重复上述操作,直到数组全都排好序;

代码如下:

public class InsertionSort {

    private static int num = 0;//循环次数

    

    public int[] sort(int[] forSort){

        for(int i=1; i<forSort.length; i++){

            for(int j=i;j>0;j--){

                num++;

                if(forSort[j]<forSort[j-1]){

                    int temp = forSort[j-1];

                    forSort[j-1] = forSort[j];

                    forSort[j] = temp;

                }else{

                    break;

                }

            }

            System.out.println("分次结果:"+Arrays.toString(forSort)+",num="+num);

        }

        return forSort;

    }

    

    public static void main(String[] args) {

        int[] array = {2,5,6,8,5,4,6,9,4,9};

        InsertionSort insertSort = new InsertionSort();

        array = insertSort.sort(array);

        System.out.println("最终结果:"+Arrays.toString(array)+",num="+num);

    }

}

执行结果如下:

分次结果:[2, 5, 6, 8, 5, 4, 6, 9, 4, 9],num=1

分次结果:[2, 5, 6, 8, 5, 4, 6, 9, 4, 9],num=2

分次结果:[2, 5, 6, 8, 5, 4, 6, 9, 4, 9],num=3

分次结果:[2, 5, 5, 6, 8, 4, 6, 9, 4, 9],num=6

分次结果:[2, 4, 5, 5, 6, 8, 6, 9, 4, 9],num=11

分次结果:[2, 4, 5, 5, 6, 6, 8, 9, 4, 9],num=13

分次结果:[2, 4, 5, 5, 6, 6, 8, 9, 4, 9],num=14

分次结果:[2, 4, 4, 5, 5, 6, 6, 8, 9, 9],num=21

分次结果:[2, 4, 4, 5, 5, 6, 6, 8, 9, 9],num=22

最终结果:[2, 4, 4, 5, 5, 6, 6, 8, 9, 9],num=22
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: