插入排序

简介: 插入排序

       三大基本排序算法之一,插入排序(Insertion Sort)。

       插入排序就是把一个数插入一个已排好的序列中。

前提:

       排序结果为从小到大。

插入排序的步骤:

       1、一个序列,把第一个数当成一个已排好的序列。

       2、从待排序的序列中取第一个数,与已排序序列中的数从后向前挨个比较大小,

       3、若是待排序的数比已排序的数小,把已排序的数在序列中向后移一个位置。

       4、重复第3步,继续比较下一个已排序的数与待排序的数。

       5、把待排序的数插入到空出的位置上。

       6、重复第2~5步,直到待排序序列为空。


代码实现:

1.  public void sort(){
2. 
3.    int[] a = {9,2,4,5,7,6,8,3,1,0};
4. 
5.    System.out.println("first:"+Arrays.toString(a));
6. 
7.    for(int i=1,num=a.length; i<num; i++)
8.    {
9.      int temp = a[i];       //记录待排序的数值
10.       int positon = 1;     //记录待排序的数值应该插入的位置
11. 
12.       for(int j = i-1;j>=0;j--)
13.       {
14.         //如果待排序数比已排序的数小,已排序数向后移一位。
15.         if(temp < a[j]){
16.           a[j+1] = a[j]; //位置后移一个
17.           positon = j;   //把空出来的位置拿到
18. 
19.         }
20.       }
21.       a[positon] = temp;     //把待排序的数据插入到空出的位置上
22. 
23.     }
24.     System.out.println("second:"+ Arrays.toString(a));
25. 
26.   }


在网上找到一个形象的图形很有意思:

参考文章: http://bubkoo.com/2014/01/14/sort-algorithm/insertion-sort/


总结:

       插入排序在最后一个数排完之前,已排序好的序列是不固定的。

       又一次学习算法,这次收获很大。要刻意练习,才能达到优秀的程度。


相关文章
|
2天前
|
搜索推荐 算法 C语言
插入排序
插入排序是一种简单直观的排序算法,通过构建有序序列,将未排序的数据逐个插入到已排序序列中的适当位置。该算法采用in-place排序,只需常数级额外空间。示例代码展示了如何使用C语言实现插入排序,并对一个整数数组进行排序。
12 6
|
5月前
|
算法 搜索推荐 Java
插入排序就是这么容易
插入排序就是这么容易
31 0
|
6月前
|
搜索推荐 C++
C++插入排序的实现
C++插入排序的实现
|
6月前
|
存储 搜索推荐 算法
插入排序(一)——直接插入排序与希尔排序
插入排序(一)——直接插入排序与希尔排序
46 1
|
搜索推荐
17 插入排序
17 插入排序
33 0
插入排序与希尔排序
插入排序与希尔排序
48 0
|
搜索推荐 测试技术 C++
【插入排序】直接插入排序 与 希尔排序
【插入排序】直接插入排序 与 希尔排序
|
算法
插入排序之直接插入排序
一、基本思想: 依次将每个记录(无序表)插入到一个已排好序的有序表中,得到一个新的,记录增加1的有序表;
|
人工智能 算法 搜索推荐
常见排序算法之插入排序——直接插入排序、希尔排序
哈喽大家好,我是保护小周ღ,本期为大家带来的是常见排序算法中的插入排序,主要有直接插入排序以及它的升级版——希尔排序,包您一看就会,快来试试吧~
149 0
常见排序算法之插入排序——直接插入排序、希尔排序
插入排序
在待排序的元素中,假设前n-1个元素已有序,现将第n个元素插入到前面已经排好的序列中,使得前n个元素有序。按照此法对所有元素进行插入,直到整个序列有序。   但我们并不能确定待排元素中究竟哪一部分是有序的,所以我们一开始只能认为第一个元素是有序的,依次将其后面的元素插入到这个有序序列中来,直到整个序列有序为止。