【数据结构第七周】排序(上)
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个元素!
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。