我已经为此工作了一段时间,我尝试了多种在线上发现的关于气泡排序的算法,但是没有一种算法适合我,我几乎要放弃了,但这是明天晚上到期。如果有人能指出我的问题出在哪里,我将不胜感激。我对 bool(boolean) 算法不太了解,因此病态的尝试找到我以前尝试过的方法并在其中进行编辑

#include <iostream>
using namespace std;

void GetInfo(int[], int&);
void BubbleSort(int[], int);
void BinarySearch(int[], int);

int main()
{
    int size;
    int array[500];
    GetInfo(array, size);
    BubbleSort(array, size);
    BinarySearch(array, size);
    return 0;
}

void GetInfo(int array[], int& size)
{
    cout << "Enter the number of naturals: ";
    cin >> size;
    cout << "Enter the natural numbers to sort: ";
    for (int i = 0; i < size; i++)
    {
        cin >> array[i];
    }

}

void BubbleSort(int array[], int size)
{
    int temp;
    bool check = true;
    int end = 0;
    while(check)
    {
        end++;
        check = false;

        for(int i = 0; i < size - end; i++)
        {
            if (array[i] > array[i+1]) //I'm positive this part is correct
            {
                temp = array[i];
                array[i] = array[i+1];
                array[i+1] = temp;
                check = true;
            }
        }

    }
       cout << endl << "Numbers sorted in ascending order: " << endl;
    for (int i = 0; i < size; i++)
    {
        cout << array[i] << ' ';
    }
}

void BinarySearch(int array[], int size) //this doesnt work properly atm but
{                                        //should be good when the sort works
    int index;
    int top = size - 1;
    int bottom = 0;
    int middle = (top) / 2;
    bool found = false;
    int target;

    cout << endl << "Enter the number to search: ";

    cin >> target;

    while (found == false)
    {
        if (target > array[middle])
        {
            bottom = middle + 1 ;
            middle = ((top - bottom)/2) + bottom;
        }
        else if (target < array[middle])
        {
            top = middle - 1;
            middle = ((top - bottom)/2) + bottom;
        }
        else
        {
            found = true;
            index = middle;
        }
    }
    cout << "Number " << target << " is found in position " << index << endl;
}

最佳答案

您可能打算在实际交换a [size + 1]时将a [i]与a [i + 1]交换

07-26 00:04