/ / Wyniki sortowania bąbelkowego nie są sortowane - c ++, sortowanie, wyjście, sortowanie bąbelkowe

Wyniki sortowania bąbelkowego nie są sortowane - c ++, sortowanie, wyjście, sortowanie bąbelkowe

Mój kod działa po umieszczeniu w funkcji int main (), ale gdy zaimplementuję go jako inną funkcję (void bubbleSort), wynik wyświetli go tak, jakby nie było sortowania.

void bubbleSort(int numeros[])
{
int store = 0;
int length = ARRAY_SIZE(numeros);
for(int i=0; i<(length-1); i++)
{
for(int j=0; j<(length-i-1); j++)
{
if(numeros[j] < numeros[j+1])
{
store = numeros[j];
numeros[j] = numeros[j+1];
numeros[j+1] = store;

}
}
}
for(int m=0; m<1000; m++)
{
cout << numeros[m] <<" ";
}
}

Co mogłem ewentualnie zrobić źle? Każda pomoc będzie bardzo ceniona.

Odpowiedzi:

1 dla odpowiedzi № 1

Nie można przekazać pełnej tablicy jako argumentu do aFunkcja c ++, tylko wskaźnik do pierwszego elementu w tablicy. W rezultacie potrzebujesz sposobu, aby powiedzieć funkcji, jak długo jest tablica. Jednym ze sposobów przekazania tego jako kolejny argument (jak pokazano poniżej). Istnieje pewna dyskusja i sugestie innych / lepszych sposobów na zrobienie tego tutaj.

Na przykład, jeśli przypadkowo wpiszesz błąd length Argument do tych funkcji zacznie działać na dowolnej pamięci po bloku pamięci, w którym znajduje się twoja tablica.

#include <iostream>

using namespace std;

void printArray(int array[], int length) {
for(int i=0; i<length; i++) {
cout << array[i] << " ";
}
cout << endl;
}

void bubbleSort(int numeros[], int length) {
int store = 0;
for(int i=0; i<(length-1); i++) {
for(int j=0; j<(length-i-1); j++) {
if(numeros[j] < numeros[j+1]) {
store = numeros[j];
numeros[j] = numeros[j+1];
numeros[j+1] = store;
}
}
}
cout << "array at end of bubble sort: ";
printArray(numeros, length);
}

int main() {
int anArray[] = {1, 3, 2, 4, 6, 5, 10, 9, 7, 8};
int arraySize = sizeof(anArray)/sizeof(anArray[0]);
cout << "arraySize: " << arraySize << endl;
cout << "array before sort: ";
printArray(anArray, arraySize);
bubbleSort(anArray, arraySize);
cout << "array after sort: ";
printArray(anArray, arraySize);
return 0;
}