C语言冒泡排序的两种算法

来源:互联网 发布:如何学习大数据 编辑:程序博客网 时间:2024/05/29 08:27
/************************************************************************************C语言冒泡排序1.指针的方法************************************************************************************/#include <stdio.h>void bubble_sort(float *pt,int n)//全用指针的冒泡排序法---从大到小{    int i,j;    float tempnum;    for(i=0;i<n;i++)    {        for(j=i+1;j<n;j++)        {            if(*(pt+j)>* (pt+i))            {                tempnum = *(pt+i);                *(pt+i) = *(pt+j);                *(pt+j) = tempnum;            }        }    }}void print_result(float *p,int n)//输出结果{     int k;    for(k=0;k<n;k++)    {        printf("%g\t",*(p+k));//\t指的是一个制表符---占8列    }}int main()//主函数{    int i;    float array[10];    float * pointer;    printf("请输入10个数:\n");    for(i=0;i<10;i++)    {        scanf("%f",&array[i]);    }    pointer=array;    bubble_sort(pointer,10); //冒泡排序    print_result(pointer,10);//输出结果    return 0;}/************************************************************************************C语言冒泡排序1.非指针的方法************************************************************************************/#include <stdio.h>#define MAX 255int R[MAX];void Bubble_Sort(int n){     /* R(l..n)是待排序的文件,采用自下向上扫描,对R做冒泡排序 */    int i,j;    int exchange; /* 交换标志 */    for(i=1;i<n;i++) /* 最多做n-1趟排序 */    {        exchange=0; /* 本趟排序开始前,交换标志应为假 */        for(j=n-1;j>=i;j--) /* 对当前无序区R[i..n]自下向上扫描 */        if(R[j+1]<R[j])/* 交换记录 */        {            R[0]=R[j+1]; /* R[0]不是哨兵,仅做暂存单元 */            R[j+1]=R[j];            R[j]=R[0];            exchange=1; /* 发生了交换,故将交换标志置为真 */        }        if(!exchange) /* 本趟排序未发生交换,提前终止算法 */        return;    }}void main(){    int i,n;    //clrscr();    system("cls");     puts("Please input total element number of the sequence:");//请输入元素个数    scanf("%d",&n);    if(n<=0||n>MAX)    {        printf("n must more than 0 and less than %d.\n",MAX);        exit(0);    }    puts("Please input the elements one by one:");    for(i=1;i<=n;i++)        scanf("%d",&R[i]);    puts("The sequence you input is:");    for(i=1;i<=n;i++)        printf("%4d",R[i]);    Bubble_Sort(n);    puts("\nThe sequence after bubble_sort is:");    for(i=1;i<=n;i++)        printf("%4d",R[i]);    puts("\n Press any key to quit...");    getchar();    getchar();}

0 0
原创粉丝点击