【问题标题】:Adding a sorting algorithm (bubble sort) to a program在程序中添加排序算法(冒泡排序)
【发布时间】:2013-05-17 14:09:18
【问题描述】:

这是我从我们大学过去的一篇论文中得到的一个问题:

  1. 用户可以输入数组大小
  2. 用户可以在数组中输入一些值;(直到它适合用户给定的数组大小
  3. 用户输入的数组应该使用冒泡排序算法进行排序

例如

  • 我输入了3号
  • 我可以输入三个数字让我们假设12, 2, 5

2.5.12应该这样排序

使用两个函数,一个输入函数和冒泡排序算法函数,我把输入函数写成这样:

void input_score(int array[], int score)
{
    for(int i=0; i<score; i++)
    {
        cout<<"enter the machine values\n";
        cin>>array[i];
    }
  for(int i=0; i<score; i++)
    {
        cout<<array[i];
    }
}

然后我想调用冒泡排序算法函数对其进行排序并打印:

void sort_array(int array[],int score){
    int temp;
    for(int i=0;i<score;i++){
        for(int j=i+1;j<score;j++){
            if(array[i]>array[j]){
                temp=array[i];
                array[i]=array[j];
                array[j]=temp;
            }
        }
    }

    cout<<"Sorted elements\n";

    for(i=0;i<score;i++)
        cout<<array[i]<<"\n;
}

所以我在输入函数中这样写了语句

for(i=0;i<=size;i++){
   sort_array(array[i],size);
}

我说的对吗? 顺便说一下,这是我的主要功能

int main()
{
    cout<<" enter number of machines\n";
    int a;
    cin>>a;
    int array[a];
    input_score(array,a);
}

【问题讨论】:

  • 你的程序有效吗?有问题吗?
  • 它可以编译,但不会调用冒泡排序算法
  • 这个程序足够短,您应该可以使用调试器逐步完成它。这将显示(仅几分钟)您的问题所在。
  • how can i call this function 的可能重复项
  • 如果您不知道如何使用调试器,请参阅youtube.com/watch?v=z5gBIizwsY0

标签: c++ function bubble-sort


【解决方案1】:

不,你不应该打电话

for(i=0;i<=size;i++){ sort_array(array[i],size) }

你应该打电话给

sort_array(array,a);

因为您的 void sort_array(int array[],int score){ 将第一个参数作为数组而不是 int.. 试试下面的主要,它应该工作。

int main()
{
    cout<<" enter number of machines\n";
    int a;
    cin>>a;
    int array[1000];
    input_score(array,a);
    sort_array(array,a);
}

或者如果你想在输入中调用排序...

void input_score(int array[], int score)
{
    for(int i=0; i<score; i++)
    {
        cout<<"enter the machine values\n";
        cin>>array[i];
    }
  for(int i=0; i<score; i++)
    {
        cout<<array[i];

    }
    sort_array(array,score);
}

【讨论】:

    【解决方案2】:

    我不知道你从哪里调用排序函数,但你应该从函数 input_score 调用它。并且也不需要使用 for 循环来调用排序函数。 只需调用一次函数,例如:

    sort_array(array, score);
    

    没有 for 循环,因为 sort_array 函数中已经有 for 循环,一旦你传递了数组的基地址,它将对整个数组进行排序。

    并且,确保您是从 input_score 或 main 函数调用 sort_array。

    【讨论】:

      猜你喜欢
      • 2016-03-19
      • 1970-01-01
      • 2016-11-01
      • 2013-06-20
      • 2013-09-04
      • 2013-11-02
      • 2019-04-21
      • 2015-03-06
      • 2015-01-17
      相关资源
      最近更新 更多