第十五周 排序 项目一 验证算法(1)冒泡排序

66 篇文章 3 订阅
  1. /* 
  2. * Copyright(c) 2017,烟台大学计算机学院 
  3. * All rights reserved. 
  4. * 文件名称:a
  5. * 作    者:张翠平 
  6. * 完成日期:2017 年 12 月 9 日 
  7. * 版 本 号:v1.0 
  8. * 
  9. * 问题描述:用一个序列作为测试数据,运行冒泡排序的算法
  10. * 输入描述:
  11. * 程序输出:排序后的结果
  12. */  
  13. main.cpp
  14. #include <stdio.h>
    #define MaxSize 20
    typedef int KeyType;    //定义关键字类型
    typedef char InfoType[10];
    typedef struct          //记录类型
    {
        KeyType key;        //关键字项
        InfoType data;      //其他数据项,类型为InfoType
    } RecType;              //排序的记录类型定义
    void BubbleSort1(RecType R[],int n)
    {
        int i,j,k,exchange;
        RecType tmp;
        for (i=0; i<n-1; i++)
        {
            exchange=0;
            for (j=n-1; j>i; j--)   //比较,找出最小关键字的记录
                if (R[j].key<R[j-1].key)
                {
                    tmp=R[j];  //R[j]与R[j-1]进行交换,将最小关键字记录前移
                    R[j]=R[j-1];
                    R[j-1]=tmp;
                    exchange=1;
                }
    
            printf("i=%d: ",i);
            for (k=0; k<n; k++)
                printf("%d ",R[k].key);
            printf("\n");
    
            if (exchange==0)    //中途结束算法
                return;
        }
    }
    int main()
    {
        int i,n=10;
        RecType R[MaxSize];
        KeyType a[]= {0,1,7,2,5,4,3,6,8,9};
        for (i=0; i<n; i++)
            R[i].key=a[i];
        printf("排序前:");
        for (i=0; i<n; i++)
            printf("%d ",R[i].key);
        printf("\n");
        BubbleSort1(R,n);
        printf("排序后:");
        for (i=0; i<n; i++)
            printf("%d ",R[i].key);
        printf("\n");
        return 0;
    }


运行结果:


知识点总结和心得体会:
理解算法,熟悉代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值