初学c++,动态分配空间利用函数模板实现冒泡与选择排序。

    头文件格式随加随用,我使用的是Dev C++,在visual studio2017中头文件应该不是这样的

不过对于初学者来说后者的东西太多,覆盖面太广,这里我们用前者举例子。

含参的排序在参数之中都要声明两点:1.分配个数2.分配数组

这里我们用冒泡函数举个例子:

template<class T>

   void  BubbleSort(int n, T *& p)

这是参数的写法

到主函数中

        int n;
cout<<"请输入数据的个数:";

cin>>n;

        double *p;

BubbleSort(n,p);//气泡排序 

          for(int i=0;i<n;i++)

cout<<p[i]<<" ";         //挨个写出数字

delete[] p;                    //释放内存


这种一一对应的关系不能改变。

下面是程序:

#include<iostream>
using namespace std;
#include<string>
template<class T>
   void  BubbleSort(int n, T *& p)
{
p=new T[n];
if(p=NULL)
{
cout<<"内存分配失败";
exit(1);
 
}
cout<<"请输入"<<"n"<<"个数据"<<endl;
for(int i=0;i<n-1;i++)
cin>>p[i];
                                             //动态分配气泡排序
for(int i=0;i<n-1;i++)
for(int j=0;j<n-i-1;j++)

if(p[j]>p[j+1])
{

   T t;
p[j]=t;
t=p[j+1];
p[j+1]=t;
}
}


template<class T>
void Selectionsort( int n,T*& p)
{
p=new T[n];
if(p=NULL)
{
cout<<"内存分配失败";
exit(1);
 
}
cout<<"请输入"<<"n"<<"个数据"<<endl;
for(int i=0;i<n-1;i++)
cin>>p[i];

int i,j,min;
  T t;
  for(i=0;i<5;i++)
{   
   min=i;                                //动态分配选择排序 
      for (j=i+1;j<5;j++) 
  if(p[min]>p[j]) min=j;
t=p[i]; 
p[i]=p[min];
    p[min]=t; 
       }

}
int main ()
{
int n;
cout<<"请输入数据的个数:";
cin>> n;
double *p;
BubbleSort(n,p);//气泡排序 
    Selectionsort(n, p);//选择排序 
for(int i=0;i<n;i++)
cout<<p[i]<<" ";
delete[] p;
return 0;

}

初学c++,动态分配空间利用函数模板实现冒泡与选择排序。


从主函数第一行开始读入

        这是debug界面

第一次做的博客有点粗糙希望大家多多包涵,有什么问题希望读者能够指出。

邮箱:[email protected]

在学术方面有什么问题欢迎研讨,我看到都会回复!