排序之简单插入排序(数组)
2017-03-09 16:58
225 查看
简单插入排序: 构建一个有序序列,将未排序的数据,在已排序序列中从后往前扫描,找到相应的位置插入。(动图)
就像整理扑克牌一样,随便抓了5张牌之后,要从左到右,将牌按照从小到大的顺序排列。因此,首先从第二张牌(目标牌)开始,与它之前的牌比较大小,若第一张牌比此牌大,那么将第一张牌往后移动一个位置,并将目标牌放在第一位;紧接着,目标牌换为第三张牌,以目标牌从后往前扫描。。。。。。
时间复杂度:最差(逆序):O(n2)
最好(正序):O(n)
总的:O(n2)
是稳定的。由于冒泡和选择排序。
就像整理扑克牌一样,随便抓了5张牌之后,要从左到右,将牌按照从小到大的顺序排列。因此,首先从第二张牌(目标牌)开始,与它之前的牌比较大小,若第一张牌比此牌大,那么将第一张牌往后移动一个位置,并将目标牌放在第一位;紧接着,目标牌换为第三张牌,以目标牌从后往前扫描。。。。。。
时间复杂度:最差(逆序):O(n2)
最好(正序):O(n)
总的:O(n2)
是稳定的。由于冒泡和选择排序。
#include<iostream> using namespace std; #define L 6 void InsertionSort(int *a,int length) { int i,j,key; for(i=1;i<length;i++) { key=a[i]; j = i-1; while(j>=0&&a[j]>key) { a[j+1] = a[j]; j--; } a[j+1] = key; } } int main () { int r[L]; for (int i=0;i<L;i++) { cin>>r[i]; } for (int i=0;i<L;i++) { cout<<r[i]; } cout<<endl; InsertionSort(r,L); for (int i=0;i<L;i++) { cout<<r[i]; }
return 0;
}
相关文章推荐
- 第二天:数组的插入,删除和简单的排序
- 三种最简单基础的排序 选择排序 冒泡排序 直接插入排序 运用了函数指针数组
- c语言心得-----数组中对元素的操作排序,查找,插入,和删除
- 【转】Java数组排序总结(冒泡,选择,插入,希尔)
- 简单插入排序的C语言实现
- Java-数组排序(选择,冒泡,插入)
- (转) Java 数组排序总结 ( 冒泡,选择,插入,希尔)
- 常见内部排序算法 简单数组实现与分析(快速(偶原创partition函数,望众高手指正)、归并、希尔、插入、选择、冒泡)
- c+两种简单的数组排序,冒泡排序和类似选择排序的思考
- Java数组排序(冒泡,选择,插入,希尔)
- Java数组排序总结(冒泡,选择,插入,希尔)
- 简单排序总结:选择、插入、交换
- PHP 简单数组排序实现代码
- PHP 简单数组排序实现代码
- 用linq对数组排序及简单运算
- 数组排序总结(冒泡,选择,插入,希尔)
- 简单的数组排序
- C#自动给据sql中的带@的变量提取变量名称在从简单数据对象中取得生成SqlParameter数组进行数据插入(利用反射完成)
- c#数组简单排序方法
- 数组排序总结(冒泡,选择,插入,希尔)