Java排序算法——直接插入排序

来源:互联网 发布:淘宝香港发货是真的吗 编辑:程序博客网 时间:2024/06/14 00:56

直接插入排序
基本原理:把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无需表中包含n-1个元素,排序过程中每次从无序表中取出第一个元素,与有序表中元素依次比较,将它插入到有序表中的适当位置,使之成为新的有序表,则有序表扩展为2个元素,无序表为n-2个元素,不断进行上述操作
时间效率:最坏情况为O(n2),最好的情况为O(n),平均情况为O(n2)
空间效率:O(1)
算法稳定性:稳定

//直接插入排序(从小到大)public class Sort_shell {    private void shellSort(int nums[]){        int length = nums.length;        int left =0;//左指针        for(int i = 1;i<length;i++){            boolean flag = false;//标记是否需要插入            for(int j = 0;j<i;j++){                if(nums[i]<nums[j]){                    left = j;                    flag =true;                    break;                }            }            //判断是否需要插入            if(flag){                int temp = nums[i];//存储插入元素值                //移动插入位置索引后的数组元素                for(int k = i;k>left;k--){                    nums[k]= nums[k-1];                }                nums[left] =temp;//更新插入位置索引的元素            }        }        System.out.println(java.util.Arrays.toString(nums));    }    //测试主函数    public static void main(String[] args) {        int nums[]={89,54,78,82,398,7,560,25,963,16};        Sort_shell test = new Sort_shell();        test.shellSort(nums);//      System.out.println(java.util.Arrays.toString(nums));    }}
原创粉丝点击