排序算法(1):直接插入排序-一、实现思路

时间:2024-03-05 20:52:16

1.1 步骤

  • 将整个数组分组两部分,左边和右边部分;
  • 在排序的过程中,无需管右边部分的顺序,只需要保证左边始终有序;
  • 遍历从左到右,每遍历到一个新的元素,都将其取出;
  • 然后在保证顺序的左边部分中寻找其应该的位置;
  • 即,从该元素位置向左遍历,并判断是否应该插入;
  • 如不能插入,则将判断的元素向右移位,反之插入;
  • 如此反复直至遍历完成,那么整个数组都是有序的了。

1.2 流程图

注:以下面 C++ 语言的实现过程为准

True
True
False
True
False
True
开始
结束
接收参数:T* arr, int n
判断:j ≥ 0 ?
判断:tmp < arr[i] ?
判断:i < n ?
定义:T tmp
定义:int j
定义:int i
右移:arr[j + 1] = arr[j]
插入:arr[j + 1] = tmp
j--
i++
赋值:j = i - 1
赋值:tmp = arr[i]
赋值:i = 1