排序之插入排序(java实现的)

来源:互联网 发布:笔记本电脑蹭网软件 编辑:程序博客网 时间:2024/06/05 06:29

插入排序的原理是解析:

          是在已经排好序的序列中,将待排序的数据插入进来,就好比我们打牌的时候,将从桌面上拿来的牌,插入到手中已有牌中,按照从小到大(或者从大到小)顺序插入进来。

操作步骤:

        1.  插入排序的前提是待插入到的序列是有序的,因此我们的循环是从1开始的(数组下标从0开始),因为一个数字肯定是有序的。每次排序开始的时候会把待排序的数据放到一个临时变量中(数据移动流出空间,不至于把原始的数据给覆盖了),外层循环的结束点就是到达待排序列的结尾。

        2.内层循环就是往前进行比较,期间伴随着数据的移动,直到遇到不符合条件的数据(升序的话,就是遇到比待排的数小;降序的话就是遇到比待排的数大)。

代码实现(用java来实现的):

package com.alibaba.insert;public class InsertSorted2 {public static void main(String[] args) {int[] toSorted = {1,3,78,35,23,12,67};for(int i=1;i < toSorted.length;i++){int temp = toSorted[i];// 从小到大的排序 compare(toSorted[j],toSorted[j-1])<0// 从大到小进行排序 compare(toSorted[j],toSorted[j-1])>0for(int j=i;j>0&&compare(toSorted[j],toSorted[j-1])>0;j--){toSorted[j] = toSorted[j-1];toSorted[j-1] = temp;}}printArray(toSorted);}// 比较两个数的大小private static int compare (int a,int b){return a-b;}// 将数组进行输出private static void printArray(int[] intArray){for(int elements:intArray){System.out.println(elements);}}}
用途:对于数据量比较小的需求来说,插入排序的效率还是挺高的,时间复杂度也就是N的平方。空间复杂度也是常量级别N的(跟待排序列的长度有关)。

原创粉丝点击