目录
插入排序
思路:
原理视频:
代码:
时间复杂度:
总结:
题目链接:
题目描述:
插入排序基本思想是每一步将一个待排序的记录,插入到前面已经排好序的有序序列中去,直到插完所有元素为止。

输入N个整数,将它们从小到大排队后输出
输入格式:
第一行输入一个整数N
第二行输入N个整数ai
输出格式:
输出N个数
样例输入:
5 1 4 2 3 5
样例输出:
1 2 3 4 5
约定:
1<=N<=1000,0<=ai<=109
插入排序(英语:Insertion sort)是一种简单直观的排序算法。它的工作原理为将待排列元素划分为“已排序”和“未排序”两部分,每次从“未排序的”元素中选择一个插入到“已排序的”元素中的正确位置。与插入排序类似的例子就像是打牌,每拿到一张牌,就将其插入到正确的位置。
插入排序是一种稳定的排序算法。
插入排序的最优时间复杂度为n,在数列几乎有序时效率很高。 插入排序的最坏时间复杂度和平均时间复杂度都为n平方级别。

#include
using namespace std;
void Sort(int *a,int len){ //排序函数 int t,i,j; for(i=1;i=0&&a[j]>t;j--) //找到插入位置 a[j+1]=a[j]; //将插入位置空出来, 也就是将这之后每一个数往后移一位 a[j+1]=t; //赋值 }return ;
}
void print(const int *a,int n){ //输出一个数组 for(int i=0;i>n;int a[n];for(int i=0;i>a[i];Sort(a,n); //排序 print(a,n); //输出这个数组 return 0;
}
循环插入是O(N)的复杂度,在这之中还有一个找到插入位置的for循环,时间复杂度是O(logN),两者一相乘就是总时间复杂度.
总时间复杂度:O(NlogN);
这道题就是专门考的排序算法,简单插入排序,个人建议:不会桶排序,快速排序,归并排序的同学们,尽量不要用冒泡排序,这个插入排序还是更好一些,毕竟时间复杂度还是要快一些,虽然代码实现困难一点儿.
https://www.xinyoudui.com/contest?courses=336&books=325&pages=8575&fragments=16340&problemId=1230&pattern=0
https://www.xinyoudui.com/contest?courses=336&books=325&pages=8575&fragments=16340&problemId=1230&pattern=0