冒泡排序实验报告
- 格式:doc
- 大小:75.50 KB
- 文档页数:5
2015/2016(1)
实验题目冒泡排序实验学生姓名
学生学号
学生班级
任课教师
提交日期
计算机科学与技术学院
作业内容
对比数组和向量的使用方法。
使用函数实现冒泡排序算法,传递参数分别为数组和向量,要求数据不被破坏。
设计思路
主要介绍如何在不破坏原数组的情况下进行对数组的冒泡排序实现方法,在这里,采用了新建数组记录下标的方式:
1、记录方法:
代码:
int *d = new int[M];//申请空间
for (int i = 0; i < M; i++)
d[i] = i; //记录下标
然后对下标排序:
for (int i = 0; i < M - 1; i++)
for (int j = 0; j < M - 1 - i; j++)
if (c[d[j]]>c[d[j + 1]])
swap(d[j], d[j + 1]);//比较大小后互换位置
最后输出,并且释放申请的内存:
cout << "数组排序后顺序:" << endl;
for (int i = 0; i < M; i++)
cout << c[d[i]] << ' ';//排序完成,输出数据
cout << endl;
cout << "数组排序前顺序:" << endl;
for (int i = 0; i < M; i++)
cout << c[i] << ' ';//输出原数据
cout << endl;
delete[] d;//释放申请的空间
程序代码
源.cpp
#include <iostream>
#include <vector>
using namespace std;
void Sort(vector<int> &a){
vector <int>b;//记录传入数据在a数组中的下标
for (int i = 0; i < a.size(); i++)
b.push_back(i); //记录a数组中的下标
for (int i = 0; i < a.size() - 1; i++)
for (int j = 0; j < a.size() - 1 - i; j++) if (a[b[j]]>a[b[j + 1]])
swap(b[j], b[j + 1]);//比较大小后互换位置cout << "数组排序后顺序:" << endl;
for (int i = 0; i < a.size(); i++)
cout << a[b[i]] << ' ';//排序完成,输出数据cout << endl;
cout << "数组排序前顺序:" << endl;
for (int i = 0; i < a.size(); i++)
cout << a[i] << ' ';//输出原数据
cout << endl;
}//对Vector动态数组进行冒泡排序,并输出
void Sort(int c[], int M){
int *d = new int[M];//申请空间
for (int i = 0; i < M; i++)
d[i] = i; //记录下标
for (int i = 0; i < M - 1; i++)
for (int j = 0; j < M - 1 - i; j++)
if (c[d[j]]>c[d[j + 1]])
swap(d[j], d[j + 1]);//比较大小后互换位置
cout << "数组排序后顺序:" << endl;
for (int i = 0; i < M; i++)
cout << c[d[i]] << ' ';//排序完成,输出数据cout << endl;
cout << "数组排序前顺序:" << endl;
for (int i = 0; i < M; i++)
cout << c[i] << ' ';//输出原数据
cout << endl;
delete[] d;//释放申请的空间
}//对int数组进行冒泡排序,并输出
int main(){
vector <int>a;//用于存储传入的数据
int N;//vector数组的长度
int M;//int数组的长度
int Q;//传入的数据
while (cin >> N >> M){
cout << "请输入" << N << "个向量数据:" << endl;
for (int i = 0; i < N; i++){
cin >> Q;
a.push_back(Q);//存储输入数据
}
Sort(a);//冒泡排序,并对应输出
int *c = new int[M];//申请空间
cout << "请输入" << M << "个整数数据:" << endl;
for (int i = 0; i < M; i++){
cin >> Q;
c[i] = Q;//存储输入数据
}
Sort(c,M);//冒泡排序,并对应输出
delete[] c;//释放申请的空间
}
}
测试结果
到此为止,冒泡排序都能够正确实现,得到正确的结果。