c++ - 冒泡排序不传递数据或不起作用

标签 c++ arrays sorting bubble-sort median

我正在为一项作业编写一个程序,其中该程序将成绩存储在数组中,具有输入成绩并将其存储在数组中并返回成绩数的函数,最多可处理 20 个成绩,具有一个函数对成绩数组进行排序,并有一个单独的函数接受排序后的数组并返回中位数。我已经编写了代码,但它没有对数组进行排序。不确定我做错了什么。任何帮助将不胜感激。

#include <iostream>

using namespace std;

int main();

void bubbleSort(double[], int); //Function prototypes
void swap(double &, double &);
void findMedian(double[], int, int, int, int, int);



int main()
{
    int numgrades;          // the number of grades in the array
    double grades[20];      // array of grades
    int first = 0,
        last,
        middle;
    double medianeven;      // median if # of elements are even
    double medianodd;       // median if # of elements are odd
    bool isEven(int);       // determines if the #of elements is even

    cout << "Please enter the number of grades. ";
    cin >> numgrades;

    for (int index = 0; index <= numgrades - 1; index++)
    {
        cout << "Enter test score "
            << (index + 1) << ":";
        cin >> grades[index];
    }

    void bubbleSort(double grades[], int numgrades);


    for (int index = 0; index <= numgrades - 1; index++)
    {
        cout << grades[index];
    }

    (((last) = (numgrades - 1)));
    (((middle) = (first + last) / 2));

    if (isEven(numgrades))
    {
        (medianeven = ((grades[middle] + grades[middle + 1]) / 2));
        cout << "The median grade is +" << medianeven << "." << endl;
    }

    else
    {
        ((medianodd = grades[middle]));
        cout << "The median grade is -" << (medianodd) << "." << endl;
    }

    return 0;
}


void bubbleSort(double array[], int numgrades)
{
    int minIndex;
    double minValue;

    for (int start = 0; start < (numgrades - 1); start++)
    {
        minIndex = start;
        minValue = array[start];
        for (int index = start + 1; index < numgrades; index++)
        {
            if (array[index] < minValue)
            {
                minValue = array[index],
                    minIndex = index;
            }
        }
        swap(array[minIndex], array[start]);
    }

}

void swap(double &a, double &b)
{
    double temp = a;
    a = b;
    b = temp;
}

bool isEven(int number)
{
    bool status;

    if (number % 2 == 0)
        status = true;
    else
        status = false;

    return status;
}

最佳答案

main

void bubbleSort(double grades[], int numgrades);

bubbleSort 函数的前向声明,而不是对其的调用。

bubbleSort(grades, numgrades);

将调用函数。

关于c++ - 冒泡排序不传递数据或不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48434638/

相关文章:

c++ - C++ 中的一行用户输入赋值

c++ - vc++ 中未处理的异常 - HRESULT 失败

php - CakePHP 2.0 对象不是数组

Python排序元组列表按值反转和按键不反转(两种不同的方式)

c# - 如何使用字符串执行数字有效排序?

c++ - 如何找出 Linux 上 C++ 程序的内存堆栈的最大大小? (gnu 编译器)

c++ - FindFirstChangeNotification 锁定父文件夹

c - 采访中询问: Dynamic Programming

C - 实现 Char * 数组的队列

javascript - 数组排序: all possible sequences