冒泡排序,选择排序和插入排序

时间:2015-02-24 04:14:35

标签: c++ sorting bubble-sort insertion-sort selection-sort

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

我真的不知道...... T_T ...........

请帮助!!

2 个答案:

答案 0 :(得分:0)

实际上,查看排序过程非常简单。您只需在排序过程中输出。你不需要为此调用另一个功能。试试这样的事情

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);
}

答案 1 :(得分:0)

您已经拥有displayPtrArray所需的确切代码!重置中定义的for循环应该这样做。

查看预期输出,每次对数组进行更改时都会显示该数组。对于冒泡排序,当您进行交换时(在if语句的末尾),数组会发生变化,因此您希望在swap = true之后的行中添加对displayPtrArray的调用。

对于选择排序,数组在外部for循环结束时更改,因此您应该在array[startScan] = minValue;之后的行中添加对displayPtrArray的调用。

对于插入排序,数组在内部for循环的每次迭代时以及外部for循环的最后一行中更改,因此您可能必须在这两个位置调用displayPtrArray。

注意:如果您不熟悉语法,可以像下面这样调用函数:displayPtrArray(array, size);其中array是数组变量的名称(名称为array在冒泡和选择排序中;它在插入排序中是asize是数组的大小(在所有三个排序函数中一致地命名)。