直接插入排序
【王道计算机考研 数据结构】 https://www.bilibili.com/video/BV1b7411N798/?p=87&share_source=copy_web&vd_source=734d9fe130776e8ae82b2b5371a5f5b8
可以看一下他们的讲解,但注意,他们代码应该不对
主要是学习数据结构,真的做什么请直接调用stl中的排序算法
说明
算法思想: 每次将一个待排序的记录按其关键字大小插入到前面已排好序的子序列中,直到全部记录插入完成。
实现代码
/*功能:直接插入排序
* 输入:
* A:指针
* n:要排序的元素个数
* 输出:
* 其它:
* 顺序由小到大
* 直接在原本的数组中排序(直接处理原来的数组)
*/
void insertSort(int* A, int n);
void insertSort(int* A, int n)
{
int temp;//后面用于暂存的变量
for (int i = 1; i < n; i++)
{
if (A[i] < A[i - 1])//若A[i]关键字小于前驱
{
temp = A[i];//用temp暂存A[i]
int j = i-1;
for (; j>=0; j--)//从i左面第一开始往左检查到头,i左面是已经排好的,注释1
{
if(A[j]>temp)//所有大于temp的都向后挪一位
A[j + 1] = A[j];
else//找到了插入的位置,跳出循环
break;
}
//这时插入位置就是j后面一个
A[j+1] = temp;//复制到插入位置
}
}
}
/*注释1
* 从头往右,那样比较乱
*/