实验目的:学会冒泡排序算法
实验内容:实现冒泡排序算法,并将之定义为一个函数,其中参数是指向数组的指针变量
* 程序头部注释开始
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:
* 作
* 完成日期:
* 版本号:
* 对任务及求解方法的描述部分
* 输入描述:要排序的数据在程序中初始化
* 问题描述:实现冒泡排序
* 程序输出:排序后的结果
* 程序头部的注释结束(此处也删除了斜杠)
#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.对冒泡法运作机理的熟悉掌握是该程序得以实现的基础。
2.毕竟是要求用指针完成程序,因此对于指针及指针变量的清楚认知是必不可少的。
3.学会程序的改写以及嫁接,以前做过数组冒泡法的练习,其实只要熟悉指针,将以前的程序稍加改写便可得到结果。
上机感言:
必须承认,自己对指针的了解程度明显不够,因此运用起来显得有些生搬硬套,更不用提熟练掌握了,唉~课本还是看的不够,指针真的是个难点,还要加油,重点突破。