/ / Bubble Sort program nevytvára výsledok - c ++, polia, triedenie, bubble-sort

Program Bubble Sort nevykazuje výsledok - c ++, polia, triedenie, triedenie bublinami

Som v diskrétnej matematickej triede a jedným z problémov je implementácia druhu bubliniek. Tu je môj zbytočný pokus, pretože nevytvára riešenie.

#include <iostream>
#include <cstdlib>
using namespace std;
void BubbleSort();
int array1[100] = {0};
int k;
int main()
{
cout << "Enter your numbers and when you are done, enter 0000:n";
int x = 0;
int i;
while (i != 0000)
{
cin >> i;
array1[x] = i;
x++;
k = x;
}
BubbleSort();
system("pause");
return 0;

}

void BubbleSort(){
int temp;
for( int i = 0; i < k; i++ ){
if ( array1[i] > array1[i+1]){
temp = array1[i+1];
array1[i+1] = array1[i];
array1[i] = temp;
}
}
int x = 0;
while (x <= k)
{
cout << array1[x] << "n";
x++;
}
}

Používajte len základné programovacie techniky, pretože to je moja prvá programovacia trieda. Ďakujem. Upraviť: opravil relačný operátor. Ale teraz mám nesprávne výsledky.

odpovede:

1 pre odpoveď č. 1

Primárny problém je tu:

while (x >! k)

Pri prvej iterácii podmienka kontroluje, či (0 > !k), a k nie je 0, takže !k je 0, takže podmienka je nepravdivá a slučka sa nikdy nevykoná. Skúste použiť:

for (int x = 0; x < k; x++)
cout << array1[x] << "n";

Máte tiež problém v triediacej fáze vášho druhu bubliniek; Jediným opakovaním údajov je to len raz, čo nie je dosť na to, aby ste ich mohli usporiadať.

Napokon, niektoré otázky dizajnu.

  1. Mali by ste mať jednu funkciu na triedenie údajov a samostatnú funkciu na ich vytlačenie. Nespájajte tieto dve funkcie tak, ako ste to urobili.
  2. Vyhnite sa globálnym premenným. Pole a jeho operačnú dĺžku odovzdajte funkcii triedenia a funkcii tlače, ak ju máte.

2 pre odpoveď č. 2
while (x >! k)

To nie je "to, čo si myslíte, že áno. Ak chcete niečo, čo hovorí," zatiaľ čo x nie je väčšia ako k", chceš <=, od tej doby array1[k] isn "t jeden z prvkov, ktoré ste zoradili, aj keď pravdepodobne budete chcieť." <.

while (x < k)

Poznač si to for existuje pre tieto slučky:

for (int x = 0; x < k; x++) {
cout << array1[x] << "n";
}

Čo sa týka novej chyby, robíte len jedno kolo bubliniek vo vašej bublinkovej triede for slučky. tiež i nie je nikdy inicializovaná v main, a i != 0000 nebude kontrolovať, či užívateľ doslova zadal 4 nuly. 0.