2D字符串数组冒泡排序

问题描述 投票:0回答:1

我试图找出如何冒泡排序二维字符串数组。我目前套牢试图找出为什么我的心不是程序排序字符串。我spsupect它可能是可能的,什么是错与无效掉。我觉得需要服用点与二维数组被摆在那里。我不是很肯定,我只是学会了如何创建冒泡排序算法。

#包括

using namespace std;

  const int SIZE = 2;
  const int ROWS = 2;

void bubbleSort(string values[][SIZE]);
void swap(int &, int &);

int main ()

{



    string values[ROWS][SIZE] = {{"A23", "A12"}, {"name1", "name2"}};

    cout << "Unsorted Values: " << endl;


    for(auto element : values)
        cout << element << " ";

    cout << endl;

    cout << "Sorted Values" << endl;

         bubbleSort(values);
            for (auto element:values)

        cout << element << " ";

    return 0;

}

void bubbleSort(string values[][SIZE])
{
    int maxElement;
    int index;

    for (maxElement = SIZE - 1; maxElement > 0; maxElement--)
    {
        for( index = 0; index < maxElement; index++)
        {
            if (values[0][index] > values[0][index + 1])
            {
                swap(values[0][index], values[0][index + 1]);
            }
        }
    }
}

void swap(int &a, int &b)
{
    int temp = a;
    a = b;
    b = temp;
}
c++
1个回答
0
投票

你的程序打印出不会忽略,因为打印循环遍历字符串的二维数组的每个条目。因此,每个条目是一个数组。所以arr保持的指针数组的第一个元素。你只需要一个嵌套循环来打印出单一元素的值:

for (auto row : values)
    for (int i = 0; i < SIZE; i++)
        std::cout << row[i] << " ";

此外,也没有必要实现一个自己的交换功能。只要使用std::swap(T&,T&)

但我认为要实现一机多数组排序。那么你应该使用一个简单的结构来表示实体,而不是多个阵列和实施符来比较两个实体。我建议使用基于容器的范围太。然后,你可以采取的标准排序功能的优势。

#include <string>
#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

struct Entry
{
    string id;
    string name;

    bool operator<(const Entry& comp)
    {
        return id < comp.id;
    }
};

int main()
{
    auto print = [](const vector<Entry>& vec)
    {
        for (auto& el : vec)
        {
            cout << el.id << "->" << el.name << "\t";
        }   
    };


    vector<Entry> values { {"A23","name1" }, {"A12", "name2"} };

    cout << "Unsorted Values: " << endl;
    print(values);
    cout << endl;

    std::sort(values.begin(), values.end());
    cout << "Sorted Values" << endl;
    print(values);


    return 0;
}

打印出来:

Unsorted Values:
A23->name1   A12->name2
Sorted Values:
A12->name2   A23->name1
© www.soinside.com 2019 - 2024. All rights reserved.