Пузырьковая сортировка, сортировка выбором и сортировка вставками

http://imgur.com/TnUACAc

Это ссылка, которая показывает результат.

И вот каким должен быть мой результат C++

Как видно из этого результата, существуют сортировка пузырьком, сортировка выбором и сортировка вставками.

и каждый процесс каждого вида отображается на черном экране.

Например, (пузырьковая сортировка)

20 10 40 30

20 10 30 40

10 20 30 40.

Я должен использовать void displayPtrArray, чтобы показать это.

#include <iostream>
#include <string>
#include <array>
#include <iomanip>

using namespace std;

void reset(int array[], const int size);
void displayIntArray();
void displayPtrArray(const int array[], int size);
void BubbleSort(int array[], int size);
void SelectionSort(int array[], int size);
void InsertionSort(int a[], int size);

const int RR = 4;

int main()
{
    int arr[RR];
    reset(arr, RR);

}

void reset(int array[], const int size)
{
    cout << "The originial array has been reset to:" << endl;
    int array[RR] = { 20, 40, 10, 30 };

    for (int n = 0; n < size; n++)
    {
        cout << setw(5) << array[n];
    }
    cout << endl << endl;
}

void displayPtrArray(const int array[], int size)
{
}

void displayIntArray()
{
}

void BubbleSort(int array[], int size)
{
    bool swap;
    int temp;

    do
    {
        swap = false;
        for (int count = 0; count < (size - 1); count++)
        {
            if (array[count] > array[count + 1])
            {
                temp = array[count];
                array[count] = array[count + 1];
                array[count + 1] = temp;
                swap = true;
            }
        }
    } while (swap);
}

void selectionSort(int array[], int size)
{
    int startScan, minIndex, minValue;

    for (startScan = 0; startScan < (size - 1); startScan++)
    {
        minIndex = startScan;
        minValue = array[startScan];
        for (int index = startScan + 1; index < size; index++)
        {
            if (array[index] < minValue)
            {
                minValue = array[index];
                minIndex = index;
            }
        }
        array[minIndex] = array[startScan];
        array[startScan] = minValue;
    }
}

void InsertionSort(int a[], int size)
{
    for (int i = 1; i<size; i++)
    {
        int j;
        int current = a[i];
        for (j = i - 1; j >= 0 && a[j]> current; j--)
        {
            a[j + 1] = a[j];
        }
        a[j + 1] = current;
    }
}

Я использую эту функцию для каждого вида, но если это неправильно, сообщите мне.

И научите меня, как показать процесс каждого вида с помощью

void displayPtrArray

Я правда не знаю..... Т_Т.........

ПОЖАЛУЙСТА ПОМОГИ !!


person GothLoli    schedule 24.02.2015    source источник
comment
Если вы хотите увидеть процесс, просто выведите массив между процессами сортировки.   -  person Arun A S    schedule 24.02.2015


Ответы (2)


У вас уже есть код, необходимый для displayPtrArray! Цикл for, определенный в сбросе, должен это сделать.

Глядя на ожидаемый результат, массив отображается каждый раз, когда в нем происходят изменения. Для пузырьковой сортировки массив изменяется, когда вы выполняете обмен (в конце оператора if), поэтому вы хотите добавить свой вызов displayPtrArray в строку после swap = true.

Для сортировки выбором массив изменяется в конце вашего внешнего цикла for, поэтому вы должны добавить вызов displayPtrArray в строку после array[startScan] = minValue;.

Для сортировки вставками массив изменяется при каждой итерации внутреннего цикла for, а также в последней строке внешнего цикла for, поэтому вам, вероятно, придется вызывать displayPtrArray в обоих этих местах.

Примечание: на случай, если вы не знакомы с синтаксисом, вызовите функцию следующим образом: displayPtrArray(array, size);, где array — имя вашей переменной массива (имя array в пузырьковой сортировке и сортировке выбором; a в сортировке вставками) и size - это размер массива (именуемый последовательно во всех трех ваших функциях сортировки).

person rswords    schedule 24.02.2015

Собственно, наблюдать за процессом сортировки довольно просто. Вам просто нужно вывести в процессе сортировки. Для этого не нужно вызывать другую функцию. Попробуйте что-нибудь вроде этого

void BubbleSort(int array[], int size)
{
    bool swap;
    int temp;

    do
    {
        swap = false;
        for (int count = 0; count < (size); count++)
        {
            if (array[count] > array[count + 1])
            {
                temp = array[count];
                array[count] = array[count + 1];
                array[count + 1] = temp;
                swap = true;

            }
           cout << "\nThe array is ";
           for ( int i = 0; i < ( size - 1 ); i++ )
           cout << array[i] << "\t";                            // Look here
           cout << "\nThe value of temp is " << temp << endl;   // and here
        }
    } while (swap);
}
person Arun A S    schedule 24.02.2015