算法---直接插入排序

来源:互联网 发布:淘宝开店收费吗2016 编辑:程序博客网 时间:2024/06/05 06:20
package sort;/* * 直接插入排序: *  * 思想:设前面(n-1)个数是排序好的,把第n个数插入前面第(n-1)个数之后, *      使得数组也是排序好的。 *  * 原理:1、首先将第n个数保存,第n个数依次和前面第(n-1)个数左对比(即遍历n-1); *      2、若第n个数满足小于(n-1)数,继续遍历,顺便将(n-1)的数 *         往后移; *      3、当遍历过程中遇到一个数不满足第n个数小于(n-1)的数,停止遍历, *         同时将第n个数赋值给当前位置。(即默认前面是排序好的,不需要再进行遍历) */public class InsertSort {public InsertSort(int[] arr){for(int i =1;i<arr.length;i++){if(arr[i]<arr[i-1]) //先进行遍历前的判断{int temp=arr[i]; //首先将第n个数保存int j=i-1;for(;j>=0&&temp<arr[j];j--){arr[j+1]=arr[j];//将满足条件的数往后赋值(即位移)}arr[j+1]=temp;//跳出遍历后,把第n个数插进不满足条件的位置上(即默认不满足条件的位置的前面那些数是排序好的)}}for(int x=0;x<arr.length;x++){System.out.println(arr[x]);}}public static void main(String[] args) {int [] arr={4,6,5,3,8,9,1,2,7};new InsertSort(arr);}}

0 0
原创粉丝点击