2024年冒泡排序实验报告.doc
/(1)
试验題目冒泡排序试验
學生姓名
學生學号
學生班级
任課教師
提交曰期
计算机科學与技术學院
作业内容
對比数组和向量的使用措施。使用函数实現冒泡排序算法,传递参数分别為数组和向量,规定数据不被破壞。
设计思绪
重要简介怎样在不破壞原数组的状况下進行對数组的冒泡排序实現措施,在這裏,采用了新建数组记录下標的方式:
1、记录措施:
代码:
int*d=newint[M];//申請空间
for(inti=0;iM;i++)
d[i]=i;//记录下標
然後對下標排序:
for(inti=0;iM-1;i++)
for(intj=0;jM-1-i;j++)
if(c[d[j]]c[d[j+1]])
swap(d[j],d[j+1]);//比较大小後互换位置
最终输出,并且释放申請的内存:
cout数组排序後次序:endl;
for(inti=0;iM;i++)
coutc[d[i]];//排序完毕,输出数据
coutendl;
cout数组排序前次序:endl;
for(inti=0;iM;i++)
coutc[i];//输出原数据
coutendl;
delete[]d;//释放申請的空间
程序代码
源.cpp
#includeiostream
#includevector
usingnamespacestd;
voidSort(vectorinta){
vectorintb;//记录传入数据在a数组中的下標
for(inti=0;ia.size();i++)
b.push_back(i);//记录a数组中的下標
for(inti=0;ia.size()-1;i++)
for(intj=0;ja.size()-1-i;j++)
if(a[b[j]]a[b[j+1]])
swap(b[j],b[j+1]);//比较大小後互换位置
cout数组排序後次序:endl;
for(inti=0;ia.size();i++)
couta[b[i]];//排序完毕,输出数据
coutendl;
cout数组排序前次序:endl;
for(inti=0;ia.size();i++)
couta[i];//输出原数据
coutendl;
}//對Vector動态数组進行冒泡排序,并输出
voidSort(intc[],intM){
int*d=newint[M];//申請空间
for(inti=0;iM;i++)
d[i]=i;//记录下標
for(inti=0;iM-1;i++)
for(intj=0;jM-1-i;j++)
if(c[d[j]]c[d[j+1]])
swap(d[j],d[j+1]);//比较大小後互换位置
cout数组排序後次序:endl;
for(inti=0;iM;i++)
coutc[d[i]];//排序完毕,输出数据
coutendl;
cout数组排序前次序:endl;
for(inti=0;iM;i++)
coutc[i];//输出原数据
coutendl;
delete[]d;//释放申請的空间
}//對int数组進行冒泡排序,并输出
intmain(){
vectorinta;//用于存储传入的数据
intN;//vector数组的長度
intM;//int数组的長度
intQ;//传入的数据
while(cinNM){
cout請输入N個向量数据:endl;
for(inti=0;iN;i++){
cinQ;
a.push_back(Q);//存储输入数据
}
Sort