码迷,mamicode.com
首页 > 编程语言 > 详细

【数据结构第七周】排序(上)

时间:2015-03-10 21:25:41      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:

1、简单排序

void Bubble_Sort( ElemenType A[], int N)
{
	for ( P = N-1; P >= 0 ; P--)
	{
		flag = 0;
		for (i = 0; i < P; ++i)
		{
			if (A[i] > A[i+1])
			{
				Swap(A[i],A[i+1]);
				flag = 1;
			}
		}
		if (flag == 0)
		{
			break;
		}
	}
}

最好情况:顺序T = O( N ) 

最坏情况:逆序 T = O( N^2 ) 

 

2、插入排序

void Insertion_Sort( ElementType A[], int N)
{
	for ( P = 1; P < N ; ++P)
	{
		Tmp = A[P];
		for (i = P; i > 0 && A[i-1] > Tmp; --i)
		{
			A[i] = A[i-1];
		}
		A[i] = Tmp;

	}
}

最好情况:顺序T = O( N ) 

最坏情况:逆序 T = O( N^2 ) 

 

定理:任意N个不同元素组成的序列平均具有 N ( N - 1 ) / 4 个逆序对。 

定理:任何仅以交换相邻两元素来排序的算 法,其平均时间复杂度为 Ω ( N^2 ) 。

要提高算法效率,我们必须每次消去不止1个逆序对!每次交换相隔较远的2个元素! 

 

  

【数据结构第七周】排序(上)

标签:

原文地址:http://www.cnblogs.com/acmsummer/p/4328305.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!