#include
using namespace std;
void MergeSort(int a[],int left,int right);
void Merge(int c[],int d[],int l,int m,int r);
void Copy(int a[],int b[],int left,int right);
main()
{
cout<<"请输入一组数:"<int a[4],b[4];
for(int i=0;i<4;i++)
cin>>a[i];
MergeSort(a,0,3);
for(int i=0;i<4;i++)
cout<[i]<<" ";
}
void MergeSort(int a[],int left,int right)
{
static int b[4];
if(left//至少有两个个元素
{
int i=(left+right)/2;//取中点
MergeSort(a,left,i);
MergeSort(a,i+1,right);
Merge(a,b,left,i,right);//合并到数组b
Copy(a,b,left,right);//复制回数组a
}
}
void Merge(int c[],int d[],int l,int m,int r)//合并c[l:m]和c[m+1:r]到d[l:r]
{
int i=l,j=m+1,k=l;
while((i<=m)&&(j<=r))
{
if(c[i]<=c[j])
{
d[k++]=c[i++];
}
else
{
d[k++]=c[j++];
}
if(i>m)
{
for(int p=j;p<=r;p++)
d[k++]=c[p];
}
else
{
for(int q=i;q<=m;q++)
d[k++]=c[q];
}
}
}
void Copy(int a[],int b[],int left,int right)
{
for(int i=left;i<=right;i++)
{
a[i]=b[i];
cout<[i]<
总觉得好像是b[]的定义有问题,如果两个数结果是对的,但是3个或者4个数就有问题,帮忙调试一下看看可以吗
class student 的定义中,数据成员 char sex; 后面需要加上一个分号。
class student 的定义中,成员函数 void display() 应该是 public 访问权限,但是没有显式地声明。
main() 函数中,应该先调用 stud1.set_value() 来赋初值,再调用 stud1.display() 来输出成员变量的值。
void Merge(int c[],int d[],int l,int m,int r) 函数中,如果 i 的值小于等于 m,应该用花括号把下面的两个 for 循环包起来,否则会出现数组越界的错误。
访问权限有三种:
1、public 公共权限
2、protected 保护权限
3、private 私有权限
#include<iostream>
using namespace std;
//三种访问权限
//公共权限 成员 类内可以访问,类外可以访问
//保护权限 成员 类内可以访问,类外不能访问 儿子也可以访问父亲中的保护内容
//私有权限 成员 类内可以访问,类外不能访问 儿子不可以访问父亲的私有内容
class person
{
//公共权限
public:
string m_name; //姓名
protected:
string m_car;//汽车
private:
int m_password;//银行卡密码
public:
void func()
{
m_name="张三";
m_car="拖拉机";//属于类内,所以可以访问
m_password=123456;//也属于类内
}
};
int main()
{
person p1;
p1.m_name="李四";
p1.m_car="奔驰";//这一行会出错 因为是protected 是保护权限内容,在类外访问不到
p1.m_password=123;//这一行也会出错,因为是private 也是保护权限内容 也在类外
}