双向冒泡排序

#include<stdio.h>

void duelBubbleSort(int R[],int n)
{
    int flag=1,i,j,left,right,temp;
    left=0;
    right=n-1;
    while(flag)
    {
        flag=0;
        for(i=left;i<right;i++)
        {
            if(R[i]>R[i+1])
            {
                temp=R[i];
                R[i]=R[i+1];
                R[i+1]=temp;
                flag=1;
            }
        }
        right--;
        for(j=right;j>left;j--)
        {
            if(R[j]<R[j-1])
            {
                temp=R[j];
                R[j]=R[j-1];
                R[j-1]=temp;
                flag=1;
            }
        }
        left++;
    }
}


void main()
{
    int R[100],n,i;
    scanf("%d",&n);
    for(i=0;i<n;i++)
        scanf("%d",&R[i]);
    duelBubbleSort(R,n);

    for(i=0;i<n;i++)
        printf("%d ",R[i]);
    printf("\n");
}

你可能感兴趣的:(冒泡排序)