ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

排序算法:冒泡排序、插入排序、希尔排序

2021-02-05 22:34:52  阅读:165  来源: 互联网

标签:Tmp 插入排序 冒泡排序 希尔 增量 序列 排序


冒泡排序

//  稳定的, 对元素存储在链表中的情况也可使用

// 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. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有