第十六周实验报告1

来源:互联网 发布:迈腾轮毂尺寸数据 编辑:程序博客网 时间:2024/06/07 00:54
 

实验目的:学会冒泡排序算法
实验内容:实现冒泡排序算法,并将之定义为一个函数,其中参数是指向数组的指针变量

* 程序头部注释开始
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:        用指针进行冒泡法排序                     
* 作    者:       徐嘉健                 
* 完成日期:       2011     年   12    月    14  
* 版本号:        number
* 对任务及求解方法的描述部分
* 输入描述:要排序的数据在程序中初始化
* 问题描述:实现冒泡排序
* 程序输出:排序后的结果
* 程序头部的注释结束(此处也删除了斜杠)

#include <iostream>

using namespace std;

void bubble_sort(int *p,int num);     //用于数据排序的函数

void output_array(int *q,int num);    //用于数据输出的函数

int main()
{
    int a[20] = {86, 46, 22, 18, 77, 45, 32, 80, 26, 88, 57, 67, 20, 18, 28, 17, 54, 49, 11, 16};
    int b[15] = {27, 61, 49, 88, 4, 20, 28, 31, 42, 62, 64, 14, 88, 27, 73};
    bubble_sort(a, 20);      //用冒泡法将次排序a中元素
    output_array(a, 20);     //输出排序后的数组
    bubble_sort(b, 15);      //用冒泡法将次排序b中元素
    output_array(b, 15);     //输出排序后的数组

    return 0;
}
void bubble_sort(int *p, int num)
{
    int i, j, t;
    for(i = 1; i <= num - 1; i++)              //循环趟数从1开始计时,一共需要比较数据次数减1即num-1趟
    {
        for(j = 0;j <= num - i - 1; j++)        //每趟中,从0开始计,需要比较num-i-1次
        {
            if(*(p+j) < *(p+j+1))        //每次比较两个数据,每当前一个数据小于后一个数据时,两个数据调换位置
            {
                t = *(p + j); *(p+j) = *(p + j + 1); *(p + j + 1) = t;
            }
         }
     }
}
void output_array(int *q, int num)
{
    int i;
    for(i = 0; i < num; i++)
    {
         cout << *(q + i) <<"  ";
    }
}



运行结果:

第十六周实验报告1







经验积累:
1.对冒泡法运作机理的熟悉掌握是该程序得以实现的基础。
2.毕竟是要求用指针完成程序,因此对于指针及指针变量的清楚认知是必不可少的。
3.学会程序的改写以及嫁接,以前做过数组冒泡法的练习,其实只要熟悉指针,将以前的程序稍加改写便可得到结果。

上机感言:
必须承认,自己对指针的了解程度明显不够,因此运用起来显得有些生搬硬套,更不用提熟练掌握了,唉~课本还是看的不够,指针真的是个难点,还要加油,重点突破。

原创粉丝点击