C++排序算法的问题

发布于 2021-11-15 22:07:19 字数 1180 浏览 871 评论 7

#include"iostream.h"
const int maxsize=1000;
class Sort{
public:
 sort(int  A[],int n);
 void InsertSort(int A[],int n);  //直接插入排序
 //void SelectSort(T A[],int n);  //直接选择排序
 //void BinaryInsertSort(T A[],int n);  //二分插入排序
 void BubbleSort(int A[],int n);   //冒泡排序
 //void ShellSort(T A[],int n);   //希尔排序
private:
 int a[maxsize];
 int n;
};
Sort::sort(int A[],int n)
{
  int i;
  for(i=0;i<=n;i++)
  {
    A[i]=a[i];
  }
  
}
void Sort::InsertSort(int A[],int n)
{
  for(int i=1;i<n;i++)
  {
    int temp=A[i]; //把待排序元素赋给temp;
 int j=i-1;
 while((j>=0)&&(temp<A[i]))
    {
 A[j+1]=A[j];
 j--;
}
 A[j+1]=temp;
  }
}
void Sort::BubbleSort(int A[],int n)
{
  int flag=1;
  for(int i=1;i<n;i++)
  {
   flag=0;
   for(int j=n-1;j>=i;j--)
    if(A[j]<A[j-1])
    {
  int t;
      t=A[j];
  A[j]=A[j-1];
  A[j-1]=t; flag=1;
    }
    if(flag==0)
     return;
  }
}
void main()
{ 
   int A[]={1,5,4,9,2};
   Sort sr;
   cout<<"直接插入排序后的结果为:"<<endl;
   sr.InsertSort(A,5);
   cout<<"冒泡排序后的结果为:";
   cout<<endl;
   sr.BubbleSort(A,5);
}

程序能够通过编译,但运行时没有结果。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

2021-11-17 17:56:49

哪位大神能提供一下这个程序怎么改, 最终达到楼主要的效果啊?

执手闯天涯 2021-11-17 17:56:45

没有无参构造函数。

一人独醉 2021-11-17 17:56:30

汗!输出语句都木有!还试图有结果??

辞别 2021-11-17 17:49:44

 请问你的输出语句呢?

复古式 2021-11-17 17:49:03

你的程序不能编译通过,不知道你是怎么编译通过的。

没有默认的无参构造函数。

05行构造函数写的不对,sort应该大写。

请自行添加无参构造函数

InsertSort方法内部边界判断有问题;请把第30行 temp<A[i] 改为 temp <A[j],因为temp<A[i] 是个绝对为假的判断。

没有结果,是因为你在程序运行之后没有打印结果数组。

另外,我不知道你程序12行的 int a[maxsize]是干什么用的,你程序里根本就没有用到它。

你的15行的有参构造没有用,第20为什么是A[i]=a[i]而不是a[i] = A[i]呢,虽然这个构造没有用到。

终遇你 2021-11-17 15:05:34

那个函数调用语句出问题了,函数没有被调用。

只为守护你 2021-11-16 20:31:13

没结果就试试单步跟踪,看看在哪里出了问题

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文