#数据结构#
#插入排序#
2023.10.7
一次插入过程:对于具有n个元素的有序数组a[ ],将第n+1个元素插入到数组中,插入时将要插入位置后面的所有元素后移一位。
插入排序(insertion sort):首先将第2个元素插入到前1个元素中,再将第3个元素插入到前2个元素中,以此类推,进行n-1次插入过程后,数组排序完成。
代码实现:
//插入排序
#include<iostream>
using namespace std;
template<class T>
//将元素插入到已排序的数组中
//如果当前元素比要插入的元素大,则将当前元素后移一位。最后将要插入的元素放在空出来的位置上
void insert(T a[], int n, const T& x)
{
int i;
for (i = n - 1; i >= 0 && x < a[i]; i--)
{
a[i + 1] = a[i];
}
a[i + 1] = x;
}
template<class T>
void insertionSort(T a[], int n)
{
for (int i = 1; i < n; i++)
{
T t = a[i];
insert(a, i, t);
}
}
int main() {
int n;
cin >> n;
//动态分配内存
int* a = new int[n];
for (int i = 0; i < n; i++)
{
cin >> a[i];
}
insertionSort(a, n);
for (int i = 0; i < n; i++)
{
cout << a[i] << " ";
}
delete[] a;
return 0;
}