Векторная сортировка с использованием BUbble sort C ++ - PullRequest
0 голосов
/ 04 июня 2019

Мне нужна простая программа для приема строкового вектора и сортировки с использованием пузырьковой сортировки и отображения результата. При выполнении программа автоматически прекращает работу.

#include<bits/stdc++.h>
#include<iostream>
#include<string.h>
#include<vector>
#include<algorithm>

using namespace std;

vector<string> v2;
void Bsortchar(vector <string> &ch)
{
    int i, j;
    string temp[1][200];
    int charLength = ch.size();
    cout<<ch.size();
    for(i = 0; i <= charLength; i++)
    {
        for (j=0; j < (charLength -1); j++)
        {
            if (ch[j+1] < ch[j])
            {
                temp[1][200] = ch[j];
                ch[j] = ch[j+1];
                ch[j+1]= temp[1][200];
            }
        }
    }
    return;  
}

int main()
{
    int charSize;
    //**********************************************************
    cout<<"Enter the Size of the char Vector"<<endl;
    cin>>charSize;
    cout<<"Enter the char Vector"<<endl;
    string c;
    for(int i=0;i<=charSize;i++)
    {
        cout<<i<<":";
        getline(cin,c);
        v2.push_back(c);
    }
    //************************************************************
    Bsortchar(v2);
    //***********************************************************
    cout<<endl<<"The sorted character vector array is : "<<endl;
    for(int i=0;i<=charSize;i++)
    {
        cout<<v2[i]<<" ";
    }
    //***********************************************************
    return 0;
}

Необходимо принять строку от пользователя и отобразить результаты после выполнения пузырьковой сортировки.

1 Ответ

1 голос
/ 04 июня 2019

У вас неопределенное поведение temp[1][200] находится на концах обеих частей этого (безвозмездного) двухмерного массива.

Вам не нужен массив, только один временный,

auto temp = ch[j];
ch[j] = ch[j+1];
ch[j+1]= temp;

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

std::swap(ch[j], ch[j+i]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...