排序思想
插入排序,顾名思义,其主要部分便是“插入”,就像人们玩扑克牌一样,将数组元素插在适当的位置上,即成十大排序算法中的插入排序。
运行过程
请看动画演示:
不难看出,插入排序和别的一些排序算法不一样,一般排序是从左到右进行,而插入排序是从右到左,将元素一个一个对比,直到左边一个元素比他小(降序比他大,这里用升序举例),就将元素放置在两个元素之间,直到变成有序序列。
代码:
代码如下图,此处为升序:
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
int n,a[105];//最多100个元素
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=2;i<=n;i++){
int j=i-1;
int key=a[i];
while(j>=1&&key<a[j]){
a[j+1]=a[j];
j--;
}
a[j+1]=key;
}
for(int i=1;i<=n;i++){
cout<<a[i]<<' ';
}
return 0;
}
小结
插入排序讲解就讲完了,最后科普一下,时间复杂度o(n^2),空间复杂度o(1)。