C 언어 거품 정렬 우 해 를 깊이 이해 하 다

1:직접 거품 발생

 #include<stdio.h>
int main()
{
    int i,j;
    int t;
    int a[]={10,9,8,7,6,5,4,3,2,1};//         
    int s=sizeof(a)/sizeof(a[0]);//       
    for(i=0;i<s-1;i++)//       
    {
        //         
        for(j=0;j<s-1-i;j++)
        {
            if(a[j]>a[j+1])
            {
                t=a[j];a[j]=a[j+1];a[j+1]=t;
            }
        }
    }
    for(i=0;i<s;i++)//    
    {
        printf("%d ",a[i]);
    }
    return 0;
}
2:함수 거품

#include<stdio.h>
void mppx(int a[],int s)
{
    int i,j;
    int t;
    for(i=0;i<s-1;i++)
    {
        for(j=0;j<s-1-i;j++)
        {
            if(a[j]>a[j+1])
            {
                t=a[j];a[j]=a[j+1];a[j+1]=t;
            }
        }
    }
}
int main()
{
    int a[]={10,9,8,7,6,5,4,3,2,1};//         
    int i;
    int s=sizeof(a)/sizeof(a[0]);
    mppx(a,s);//      ,  a   a        &a[0]
    for(i=0;i<s;i++)
    {
        printf("%d ",a[i]);
    }
    return 0;
}
3:거품 최적화

 #include<stdio.h>
void mppx(int a[],int s)
{
    int i,j;
    int t;
    for(i=0;i<s-1;i++)
    {
        int f=1;//              
        for(j=0;j<s-1-i;j++)
        {
            if(a[j]>a[j+1])
            {
                t=a[j];a[j]=a[j+1];a[j+1]=t;
                f=0;// f=0 ,         
            }
        }
        if(f==1)//            ,    
        {
            break;
        }
    }
}
int main()
{
    int a[]={10,9,8,7,6,5,4,3,2,1};
    int i;
    int s=sizeof(a)/sizeof(a[0]);
    mppx(a,s);
    for(i=0;i<s;i++)
    {
        printf("%d ",a[i]);
    }
    return 0;
}
정렬 후 결과..

요약:
거품 정렬 의 핵심 부분 은 이중 끼 워 넣 기 순환 이기 때문에 복잡 도가 높다.
이 글 은 여기까지 입 니 다.당신 에 게 도움 을 줄 수 있 기 를 바 랍 니 다.또한 당신 이 우리 의 더 많은 내용 에 관심 을 가 져 주 실 수 있 기 를 바 랍 니 다!

좋은 웹페이지 즐겨찾기