思路:从下标为1的地方开始遍历数组,选择 J 插入到前面有序队列的合适位置,保证前面部分有序
C++实现:
templatevoid insertionSort(T arr[], int n) { for (int i = 1; i < n; i++) for (int j = i; j > 0; j--) { if (arr[j] < arr[j - 1]) swap(arr[j], arr[j - 1]); else break; }}
GoLang实现:
func insertSort(slice []int) { for i := 1; i < len(slice); i++ { for j := i; j > 0; j-- { if slice[j] < slice[j-1] { slice[j], slice[j-1] = slice[j-1], slice[j] } else { break } } }}
python实现:
def insertSort(lst): for i in range(1,len(lst)): for j in range(i,0,-1): if lst[j-1]>lst[j]: lst[j-1],lst[j]=lst[j],lst[j-1] else: break
插入排序为稳定排序,时间复杂度为 O(n^2)