冒泡排序(C语言)

#include<stdio.h>
#include<stdlib.h>
#define ARRAYLEN 6



/**生成随机数函数*/
int CreateData(int arr[],int n,int min,int max)         //存储数组, n代表生成随机数的个数,min生成的最小随机数,max生成最大随机数         
{
    int i,j;
    int flag;
    if((max-min+1)<n)
        return 0;
    for(i=0;i<n;i++)
    {
        do
        {
            arr[i]=(max-min+1)*rand()/(RAND_MAX+1)+min;
            flag=0;
            for(j=0;j<i;j++)
            {
                if(arr[i]==arr[j])
                    flag=1;
            }
        }while(flag);
    }
    return 1;
}




/**普通冒泡排序算法*/
void BubbleSort(int a[],int n)      //存储的数组,存储的元素的个数
{
    int t;
    for(int i=0;i<n-1;i++)
    {
        for(int j=n-1;j>i;j--)
        {
            if(a[j-1]>a[j])
            {
                t=a[j-1];
                a[j-1]=a[j];
                a[j]=t;
            }
        }
        printf("第%d遍:",i+1);
        for(int j=0;j<n;j++)
            printf("%d ",a[j]);
        printf("\n");

    }
}




/**冒泡排序改进型*/
void BubbleSort1(int a[],int n)
{
    int t;
    int flag=0;
    for(int i=0;i<n-1;i++)
    {
        for(int j=n-1;j>i;j--)
        {
            if(a[j-1]>a[j])
            {
                t=a[j-1];
                a[j-1]=a[j];
                a[j]=t;
                flag=1;
            }
        }
        printf("第%d遍:",i+1);
        for(int j=0;j<n;j++)
        {
            printf("%2d ",a[j]);
        }
        printf("\n");
        if(flag==0)
            break;
        else
            flag=0;
    }
}




/**打印函数*/
int main()
{
    int i,a[ARRAYLEN];
    for(i=0;i<ARRAYLEN;i++)
        a[i]=0;
    if(!CreateData(a,ARRAYLEN,1,100))
    {
        printf("生成随机数不成功!\n");

        return 1;
    }
    printf("原数据:");
    for(i=0;i<ARRAYLEN;i++)
    printf("%d ",a[i]);
    printf("\n");
    //BubbleSort1(a,ARRAYLEN);			//改进型
    BubbleSort(a,ARRAYLEN);				//普通型
    printf("排序后: ");
    for(i=0;i<ARRAYLEN;i++)

        printf("%d ",a[i]);

    printf("\n");
    return 0;

}

#include<stdio.h>
#include<stdlib.h>
#define NUM 6

int CreateData(int a[],int n)
{
	
	printf("请输入需要排序的数据:"); 
	for(int i=0;i<n;i++)
	{
		scanf("%d",&a[i]);
	} 
} 


void BubbleSort(int a[],int n)
{
	int t;
	for(int i=0;i<n;i++)
	{
		for(int j=n-1;j>i;j--)
		{
			if(a[j-1]>a[j])
			{
				t=a[j-1];
				a[j-1]=a[j];
				a[j]=t;
			}
		}
		printf("NO.%d:  ",i+1);

		for(int j=0;j<n;j++)
		{
			printf("%2d",a[j]);

		}
		printf("\n");
	}
}


int main()
{
	int i,a[NUM];
	CreateData(a,NUM);
	
	
	BubbleSort(a,NUM);
	printf("new number is:");
	printf("\n");
	for(i=0;i<NUM;i++)
	{
		printf("%d ",a[i]);

	}
	printf("\n");
	return 0;
}

相关文章: