插入排序算法的原理:从前往后依次把元素插入到相应的位置。比插入元素大的向后移一个单位,直到找到比其小或者相等的元素才停止循环,并把元素插入到当前位置。
时间复杂度:O(n^2)。以下为实现代码:
#include <iostream>
using namespace std;
void sort(int *arr,int length) //传入数组首地址和数组长度
{
int cur, preindex; //定义要插入的值和比较元素的下标
for (int i = 1; i < length; i++) //一共需要循环 n-1 轮
{
cur = arr[i]; //插入的元素
preindex = i - 1; //从插入元素的前一个元素开始比较
while (cur < arr[preindex] && preindex >= 0) //若元素大于插入元素
{
arr[preindex + 1] = arr[preindex]; //元素向后移
--preindex;
}
arr[preindex + 1] = cur; //把插入元素插到相应位置
}
}
int main()
{
int arra[] = {12,12,54,1745,45,45,469,789,789};
int length = sizeof(arra) / sizeof(arra[0]); //计算数组长度
sort(arra,length); //调用排序算法
for (size_t i = 0; i < length; i++) //输出排序后的数组
cout << arra[i] << " ";
system("pause");
return 0;
}