Java实现简单插入排序

来源:互联网 发布:红蜻蜓软件 编辑:程序博客网 时间:2024/05/16 18:54

一、基本思想

直接插入排序是将未排序的数据插入至已排好序序列的合适位置。
  具体流程如下:
  1、首先比较数组的前两个数据,并排序;
  2、比较第三个元素与前两个排好序的数据,并将第三个元素放入适当的位置;
  3、比较第四个元素与前三个排好序的数据,并将第四个元素放入适当的位置;
   ......
  4、直至把最后一个元素放入适当的位置。
 
  假如有初始数据:25  11  45  26  12  78。
  1、首先比较25和11的大小,11小,位置互换,第一轮排序后,顺序为:[11, 25, 45, 26, 12, 78]。
  2、对于第三个数据45,其大于11、25,所以位置不变,顺序依旧为:[11, 25, 45, 26, 12, 78]。
  3、对于第四个数据26,其大于11、25,小于45,所以将其插入25和45之间,顺序为:[11, 25, 26, 45, 12, 78]。
  .......
  4、最终顺序为:[11, 12, 25, 26, 45, 78]。
 

二、时间复杂度

直接插入排序是稳定的。直接插入排序的平均时间复杂度为O(n2)。

三、Java实现

public class InsertionSort {    public static void main(String[] args){        int[] arr={25,11,45,26,12,78};        insertionSort(arr);    }    public static void insertionSort(int[] arr){        int tmp;        for (int i = 1; i<arr.length; i++){            //待插入数据            tmp = arr[i];            int j;            for(j = i-1; j>=0; j--){                //判断是否大于tmp,大于则后移一位                if (arr[j] > tmp){                    arr[j+1]=arr[j];                }else{                    break;                }            }            //将待插入的数字放在不比它大的数字后面,arr[j]不比它大            arr[j+1] = tmp;        }    }}


原创粉丝点击