冒泡排序2种算法

 

/*****************************************************************************
FileName : sort.c
Function : C语言冒泡排序
Author   : mike
Email    : [email protected]	
Version  : V1.0
Date     : 2019-07-12
Note     : 
*****************************************************************************/

#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;
}

/*****************************************************************************
* File      : C语言冒泡排序
* Function  : 非指针的方法
* Author    : Mike--->欢迎咨询单片机培训
* 淘宝店铺  : https://shop114292239.taobao.com
* SCDN      : http://blog.csdn.net/beyondmike 
*  QQ       : 276678408
* Email     : [email protected]		 	 
* Copyright : 版权归 Mike 所有,请保留本人著作权,勿随意修改、随意发布,未经
              允许不得用于其他商业用途
*****************************************************************************/
#include <stdio.h>
#define MAX 255
int 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();
}

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章