直接插入排序

维护一个"已有序前缀":每轮取出无序区第一个元素,与前面从后向前比较, 较大者逐个后移,直到找到合适位置插入。稳定排序,时间复杂度 O(n²), 数据基本有序时接近 O(n)。

插入排序
01 / 18 步
初始数组:5 2 8 1 9。直接插入排序:每轮将当前元素插入到已有序前缀。 比较 0 · 交换 0
伪代码

				
					
					1
					procedure insertionSort(a, n)
				
			
				
					
					2
					  for i = 2 to n do
				
			
				
					
					3
					    temp = a[i]
				
			
				
					
					4
					    j = i - 1
				
			
				
					
					5
					    while j >= 1 and a[j] > temp do
				
			
				
					
					6
					      a[j + 1] = a[j]
				
			
				
					
					7
					      j = j - 1
				
			
				
					
					8
					    end while
				
			
				
					
					9
					    a[j + 1] = temp
				
			
				
					
					10
					  end for
				
			
				
					
					11
					end procedure
				
			
01 / 18
速度