排序之插入排序

原创 2015年11月20日 10:44:52
insertion sorting
有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,要求插入此数据后,序列仍然有序。
每次插入一个数据,就需要和序列中的其他数据作比较,所以时间复杂度是O(n^2)。这么大的时间复杂度,很明显这个排序适合用来做少量数据的排序。
插入排序是稳定排序,也就是说,两个相同元素,在排序后前后没发生变化。
最差情况:反序,需要移动n*(n-1)/2个元素 。
最好情况:正序,不需要移动元素。

空间复杂度是O(1).

#include<iostream>

using namespace std;
/*****
function insertsort to sort
********/ 
void insertsort(int a[],int n)
{
	for(int i = 0; i < n; i++)
	{
		//the value of a[i] will be changed ,so record it in tmp
		int tmp = a[i],j = i;
		//make a space for the new element
		while(j > 0 && a[j - 1] > tmp)
		{
			a[j] = a[j - 1];
			j--;
		}
		//insert the number to the ordered list
		a[j] = tmp;
	}
}
/*****
main function to check
********/ 
int main()
{
	int n,a[101];
	cin>>n;
	
	for(int i =0; i < n; i++)
	{
		cin>>a[i];
	}
		
	insertsort(a,n);
	
	for(int i =0; i < n; i++)
	{
		cout<<a[i]<<" ";
	}
	cout<<endl;
	return 0;
} 


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

插入排序(C语言实现)

  • 2014-11-30 16:12
  • 926B
  • 下载

插入排序的方法

  • 2013-07-10 12:12
  • 31KB
  • 下载

插入排序 java实现

插入排序的实现思路: 从第一个元素开始,该元素可以认为已经被排序取出下一个元素,在已经排序的元素序列中从后向前扫描如果该元素(已排序)大于新元素,将该元素移到下一位置重复步骤3,直到找到已排序的元...

直接插入排序的C实现

  • 2013-05-16 11:20
  • 495B
  • 下载

插入排序源代码

  • 2013-07-31 08:39
  • 585B
  • 下载

插入排序及其优化方案

插入排序 基本思路 运行轨迹 代码实现 性能分析 优化方案 1、基本思路正如生活中整理扑克的方法:一张一张的来,将每一张牌插入到其他已经有序的排中的适当位置。在计算中实现? 为了给要插入的元素腾出空间...

直接插入排序

  • 2014-03-25 15:22
  • 1.02MB
  • 下载

插入排序的优化

做过几次topcoder上的小比赛,80%的题目都要用到排序,并且数据量比较少,只有几十条。这个时候,用vector和插入排序简直是既简单又合适,效率也不会很低,毕竟数据量太少。在实际的项目开发过程中...

插入排序

  • 2013-10-16 19:21
  • 993B
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)