插入算法 - jues
冒泡算法
kde卡死情况

插入算法

jues posted @ 2013年11月12日 06:31 in 笔记(原创) , 790 阅读


int insertData( int data[],int first,int last  )
{
    int i1,i2,res;

    if ( first >= last )
        return 0;

    res = 0 ;
    for ( i1 = first + 1; last >= i1;i1++ )
    {
        int swap = data[ i1 ];

        for( i2=i1 - 1;( first <= i2 ) &&( swap < data[ i2 ] ) ;i2-- )
        {
            data[ i2 + 1 ] = data[ i2 ];
        }
        data[ i2 + 1 ] = swap;
        res++;
    }

    return res;
}


int insertData2( int *data,int len  )
{
    int res = 0;
    int i1,i2;

    if ( 0 == data )
        return 0;

    for ( i1 = 1;len > i1;i1++ )
    {
        int swap = *( data + i1 );

        for ( i2 = i1 - 1;( 0 <= i2 ) && ( swap > *( data + i2 ) );i2-- )
        {
            *( data + i2 + 1 ) = *( data + i2 );
        }
        *( data + i2 + 1 ) = swap;
        res++;
    }
    
    return res;
}

void main()
{
    int data[] = { 100,99,98,97,96,95,94,93,92,91,90,89,88,87,86,85,84,83,82,81 };
    int res;
    /**/
    /* 都是插入排序,其中一个用指针方式 */
    /* 从小到大排序 */
     res = insertData( data,0,sizeof( data ) / sizeof( data[ 0 ] ) );
    /* 从大到小排序 */
     res = insertData2( data,sizeof( data ) / sizeof( data[ 0 ] ) );

}


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter