插入排序
来源:互联网 发布:gson 源码 编辑:程序博客网 时间:2024/06/05 19:57
思路:
把第一个元素看作是有序的,从第二个元素起,每次都从右向左地与前面的元素比较;
如果该小于前面的某个元素,则把大的元素往右移动;
直到该元素放在了正确的位置上。 (每次循环开始时都保证前面的元素是有序的)
复杂度:(要求升序排序)
最好情况:比较n-1次
最坏情况:比较n(n-1)次,赋值操作n(n-1)+n-1 次
把第一个元素看作是有序的,从第二个元素起,每次都从右向左地与前面的元素比较;
如果该小于前面的某个元素,则把大的元素往右移动;
直到该元素放在了正确的位置上。 (每次循环开始时都保证前面的元素是有序的)
复杂度:(要求升序排序)
最好情况:比较n-1次
最坏情况:比较n(n-1)次,赋值操作n(n-1)+n-1 次
平均:O(n^2)
#include<iostream>using namespace std;int a[1000];int main(){int n;cin>>n;for(int i=1;i<=n;i++){cin>>a[i];}a[0]=0;//设置观察哨 for(int i=2;i<=n;i++){int x=a[i];for(int j=i-1;j>=0;j--){if(x<a[j]) a[j+1]=a[j];else {a[j+1]=x;break;}}}for(int i=1;i<=n;i++) cout<<a[i]<<endl;}
0 0
- 插入排序-【插入排序】
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- vc读写xml
- Mysql 报错注入的原理探索
- UVa 12333 – Revenge of Fibonacci [大数+字典树]
- vc6 弹出对话框添加菜单,添加256真彩色工具栏
- Leetcode--Find Minimum in Rotated Sorted Array
- 插入排序
- oracle的常用函数 instr() 和substr()函数
- 1001. A+B Format (20)
- 最小生成树-Prim算法和Kruskal算法
- Gson解析josn数据的2种方法
- 上传视频时自动完成截取缩略图(二)
- C#中静态与非静态方法比较
- 在Ubuntu 12.04安装和设置Samba实现网上邻居共享
- Epoll在LT和ET模式下的读写方式