各种冒泡排序法

  普通版1:

#include<stdio.h>
int main()
{
    int a[100];
    int i,j,n,des;
    printf("please enter n:");
    scanf("%d",&n);
    printf("please enter the numbers:");
    for(i=0;i<n;i++)
        scanf("%d",&a[i]);
    for(j=0;j<n;j++)
        for(i=0;i<n-j;i++)    // 这里是递增的
          if(a[i]>a[i+1])
           {
                 des=a[i];
                 a[i]=a[i+1];
                 a[i+1]=des;
           }
    for(i=0;i<n;i++)
        printf("%d ",a[i]);
    printf("
");
    return 0;
}

  普通版2:

#include<stdio.h>
int main()
{
    int a[10],i=0,j,temp;
    printf("please enter 10 numbers:
");
    while(i<10)
        scanf("%d",&a[i++]);
    for(i=0;i<10;i++)
        for(j=9;j>=i;j--)    // 这里是递减的
            if(a[j]<a[j-1])
                temp=a[j],a[j]=a[j-1],a[j-1]=temp;
    for(i=0;i<10;i++)
        printf("%d ",a[i]);
    printf("
");
    return 0;
}

  指针版:

#include<stdio.h>
#define N 10
int main()
{
    int a[N],*p=a,*var=a,x;
    printf("请输入10个整数:
");
    for(p=a;p<a+N;p++)
        scanf("%d",p);
    for(var=a+1;var<a+N;var++){
        for(p=a+N-1;p>=a;p--){
            if(*p>*(p-1))
                x=*(p-1),*(p-1)=*p,*p=x;
        }
    }
    printf("
对10个整数进行由大到小排序:
");
    for(p=a;p<a+N;p++)
        printf("%d ",*p);
    printf("
");
    return 0;
}

  对字符串进行排序:

#include<stdio.h>
#include<string.h>
#define N 20
#define n 20
int main()
{
    char c[N][n],cont[n];
    int i,j;
    printf("Please enter the names of all the strings:
");
    for(i=0;i<N;i++){
        scanf("%s",c[i]);   
    }
    for(i=1;i<N;i++){
        for(j=0;j<N-i;j++){
            if(strcmp(c[j+1],c[j])<0)
                strcpy(cont,c[j]);strcpy(c[j],c[j+1]);strcpy(c[j+1],cont);
        }
    }
    for(i=0;i<N;i++){
        if(i%5==0)
            printf("
");
        printf("%s ",c[i]);
    }
    printf("
");
    return 0;
}

  函数版:

#include<stdio.h>
void Print(int *num, int n)
{
    int i;
    for(i = 0; i < n; i++)
        printf("%d ", num[i]);
    puts("
");
    return;
}
void Bubble_Sort(int *num, int n)
{
    int i, j;
    for(i = 0; i < n; i++)
    {
        for(j = 0; i + j < n - 1; j++)
        {
            if(num[j] > num[j + 1])
            {
                int temp = num[j];
                num[j] = num[j + 1];
                num[j + 1] = temp;
            }
            Print(num, n);
        }
    }
    return;
}
int main()
{
    int num[8] = {5,3,1,4,2};
    Bubble_Sort(num, 5);
    return 0;
}

---------------------------------补充 2017 9.29 23:18:07--------------------------------

  链表版冒泡排序:点击这里

原文地址:https://www.cnblogs.com/darkchii/p/6781905.html