介绍
基本思路
1、认为数组当中的第一个数值已经排好序了 2、定义一个游标从第二个数值开始不断地向后进行遍历 3、游标指向的数据插入已经排好序的数组中
代码
< ! -- -- java-- -- ->
public static void main ( String [ ] args) {
int [ ] arr= { 10 , 2 , 3 , 8 , 1 , 9 } ;
sort ( arr) ;
System . out. println ( Arrays . toString ( arr) ) ;
}
public static void sort ( int [ ] arr) {
for ( int i= 1 ; i< arr. length; i++ ) {
for ( int j= i; j> 0 ; j-- ) {
if ( arr[ j- 1 ] > arr[ j] ) {
int temp = arr[ j] ;
arr[ j] = arr[ j- 1 ] ;
arr[ j- 1 ] = temp;
}
}
}
}
< ! -- -- -- -- -- -- -- -- -- -- -- -- >
运行结果;
[ 1 , 2 , 3 , 8 , 9 , 10 ]
< !- - - - python- - - - - >
def insertSort ( arr) :
for i in range ( 1 , len ( arr) ) :
for j in range ( i, 0 , - 1 ) :
if arr[ j- 1 ] > arr[ j] :
arr[ j] , arr[ j- 1 ] = arr[ j- 1 ] , arr[ j] ;
print ( arr)
arr= [ 10 , 2 , 3 , 8 , 1 , 9 ] ;
insertSort( arr)
< !- - - - - - - - - - - - - - - - - - - - - - - - >
运行结果;
[ 1 , 2 , 3 , 8 , 9 , 10 ]
老规矩,上图
复杂度
时间复杂度为:O(n²) 空间复杂度为:O(1) 它是稳定排序,意味着相等元素的相对顺序在排序后保持不变。