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

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个元素! 

 

  

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。