冒泡排序
// 稳定的, 对元素存储在链表中的情况也可使用 // T = O( N^2 ) void Bubble_Sort ( ElementType[], 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; } }
插入排序
// 稳定( 相等元素不换位置 ),与冒泡排序换位次数相等 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; // 新牌落位 } }
希尔排序
// 原始希尔排序 ( 希尔增量序列为:D_m = N/2, D_k = D_(k+1)/2 ) // T = Θ ( N^2 ) void Shell_Sort ( ElementType A[], int N ) { for ( D=N/2; D>0; D/=2 ) { // 希尔增量序列 /* 插入排序 */ for ( P=D; P<N; P++ ) { Tmp = A[P]; for ( i=P; i>=D && A[i-D]>Tmp; i-=D ) A[i] = A[i-D]; A[i] = Tmp; } } } /* 优化增量序列 */ // Hibbard 增量序列 D_k = 2^k - 1 ------ 相邻元素互质 T = Θ ( N^(3/2) ) // Sedgewick 增量序列 { 1,5,19,41,109,…… } 9*4^(i) - 9*2^(i) + 1 或者 4^(i) - 3*2^(i) + 1
标签:Tmp,插入排序,冒泡排序,希尔,增量,序列,排序 来源: https://www.cnblogs.com/Pio-GD/p/14380010.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。