排序算法(2)直接插入排序
原理:将数组中的所有元素依次和前面的已经排好序的元素相比较(依次) ,如果选择的元素比已排序的元素小,则交换,直到全部元素都比较过。
代码实现:
void InsertSort(int arr[], int n)
{
for (int end = 1; end < n; end++)//用end的位置控制边界
{
//单趟排序
int temp = arr[end];//暂时存储end的值
int i = end - 1;
for (; i >= 0; i--)//从end的前一位往前遍历到0
{
if (arr[i] > temp)//找到大于temp的值,改成< 是降序排序
{
arr[i + 1] = arr[i];//后一个赋上前一个的值
}
else break;
}
arr[i + 1] = temp;//到这一步 ,让停止位置上的数赋上temp的值,最终实现插入
}
}