第十五周项目一——验证算法之冒泡排序

来源:互联网 发布:图像边缘检测算法代码 编辑:程序博客网 时间:2024/05/19 19:33
*Copyright(c)2017,烟台大学计算机与控制工程学院                                      *All rights reservrd.                                         *作者:刘文平                                      *完成时间:2017年12月7日                                      *版本号:v1.0                                      *问题描述:用序列{57, 40, 38, 11, 13, 34, 48, 75, 6, 19, 9, 7}作为测试数据,运行并本周视频中所讲过的算法对应 程序,观察运行结果并深刻领会算法的思路和实现方法:冒泡排序。   *问题输入:无    *问题输出:见截图  第一种算法:#include <stdio.h>#define MaxSize 20typedef int KeyType;    //定义关键字类型typedef char InfoType[10];typedef struct          //记录类型{    KeyType key;        //关键字项    InfoType data;      //其他数据项,类型为InfoType} RecType;              //排序的记录类型定义void BubbleSort(RecType R[],int n){    int i,j,k;    RecType tmp;    for (i=0; i<n-1; i++)    {        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;            }        printf("i=%d: ",i);        for (k=0; k<n; k++)            printf("%d ",R[k].key);        printf("\n");    }}int main(){    int i,n=10;    RecType R[MaxSize];    KeyType a[]= {9,8,7,6,5,4,3,2,1,0};    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");    BubbleSort(R,n);    printf("排序后:");    for (i=0; i<n; i++)        printf("%d ",R[i].key);    printf("\n");    return 0;}第二种算法(改进后的算法):#include <stdio.h>#define MaxSize 20typedef 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;}知识点总结:通过冒泡排序第一次就可以将一组数中最小的数排出来。学习心得:C++ 中学过冒泡排序,现在又学习一遍,比较深刻。

阅读全文
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 唐山住房公积金查询 吉林省住房公积金查询 郑州市住房公积金管理中心 淮安市住房公积金管理中心 住房基金查询 娄底住房公积金查询 住房公积金查询余额 贵港住房公积金查询 东莞市住房公积金管理中心 住房公积金网站 广州住房公积金查询 河南省住房公积金查询 福州住房公积金管理中心 常州住房公积金查询 遂宁市住房公积金管理中心 天津市住房公积金管理中心 湖南住房公积金查询个人账户 深圳住房公积金电话 住房公积金查询网 洛阳住房公积金 呼和浩特住房公积金查询 青海省住房公积金查询 郑州住房公积金管理中心 苏州住房公积金查询 成都住房公积金查询个人账户 住房公积金中心电话 昆山住房公积金管理中心 吉林市住房公积金查询 沈阳住房公积金 沈阳住房公积金管理中心 贵港市住房公积金管理中心 萍乡住房公积金查询 郑州市住房公积金 赣州市住房公积金管理中心 济南住房公积金查询 济宁市住房公积金个人查询 西安住房公积金查询网 西安市住房公积金中心 西安市住房公积金 西安市住房公积金管理中心 西安市个人住房公积金查询