用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - c代码库

c语言算法 选择排序、插入排序、冒泡排序

2012-10-30 作者: 程序猿style举报

[c]代码库

#include<stdio.h>
 
#include<stdlib.h>
#include<time.h>
#define MAX 10
#define SWAP(x,y){int t;t=x;x=y;y=t;}
 
void selsort ( int[] ); // 选择排序
void insort ( int[] );  // 插入排序
void bubsort ( int[] ); // 气泡排序
 
int main ( void )
{
    int number[MAX]={0};
    int i;
 
    srand ( time ( NULL ) );
 
    printf ( "排序前:" );
    for ( i=0; i<MAX; i++ )
    {
        number[i]=rand() %100;
        printf ( "%d",number[i] );
    }
 
    printf ( "\n请选择排序方式:\n" );
    printf ( "(1)选择排序\n(2)插入排序\n(3)气泡排序:\n" );
 
    scanf ( "%d",&i );
 
    switch ( i )
    {
case 1:
        selsort ( number );
        break;
case 2:
        insort ( number );
        break;
case 3:
        bubsort ( number );
        break;
    default:
        printf ( "选项错误(1..3)\n" );
    }
 
    return 0;
}
 
void selsort ( int number[] )
{
    int i,j,k,m;
 
    for ( i=0; i<MAX-1; i++ )
    {
        m=i;
        for ( j=i+1; j<MAX; j++ )
            if ( number[j]<number[m] )
                m=j;
 
        if ( i!=m )
            SWAP ( number[i],number[m] )
            printf ( "第%d 次排序:",i+1 );
        for ( k=0; k<MAX; k++ )
            printf ( "%d",number[k] );
        printf ( "\n" );
    }
}
 
void insort ( int number[] )
{
    int i,j,k,tmp;
 
    for ( j=1; j<MAX; j++ )
    {
        tmp=number[j];
        i=j-1;
 
        while ( tmp<number[i] )
        {
            number[i+1]=number[i];
            i--;
            if ( i==-1 )
                break;
        }
        number[i+1]=tmp;
 
        printf ( "第%d 次排序:",j );
        for ( k=0; k<MAX; k++ )
            printf ( "%d",number[k] );
        printf ( "\n" );
    }
}
 
void bubsort ( int number[] )
{
    int i,j,k,flag=1;
 
    for ( i=0; i<MAX-1&&flag==1; i++ )
    {
        flag=0;
        for ( j=0; j<MAX-i-1; j++ )
        {
            if ( number[j+1]<number[j] )
            {
                SWAP ( number[j+1],number[j] );
                flag=1;
            }
        }
 
        printf ( "第%d 次排序:",i+1 );
        for ( k=0; k<MAX; k++ )
            printf ( "%d",number[k] );
        printf ( "\n" );
    }
}

[代码运行效果截图]


c语言算法  选择排序、插入排序、冒泡排序


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...