• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Bubble sort w C - podstawy

0 głosów
43 wizyt
pytanie zadane 21 lutego w C i C++ przez Zaratustra Początkujący (280 p.)

Witam mógłby ktoś mi wytłumaczyć gdzie popełniłem błąd, ponieważ output = 13455. Dlaczego podwaja '5' i zjada '2'?

#include <stdio.h>
void swap(int *xp, int *yp)
{
    int temp;
    temp = *yp;
    *yp = *xp;
    *xp = *yp;
}
void comp(int arr[], int n)
{
    int i, j;
    for(i = 0 ; i < n-1 ; i++)
    {
        for(j = i+1 ; j < n ; j++)
        {
            if(arr[i]>arr[j])
            {
            swap(&arr[i], &arr[j]);
            }
        }
    }
        
}
void printArr(int arr[], int n)
{
    int i;
    for (i = 0 ; i < n ; i++)
        printf("%d",arr[i]);
}
int main(void){
    int arr[] = { 1 , 3 , 4 , 5 , 2};
    int n=sizeof(arr)/sizeof(arr[0]);
    comp(arr, n);
    printArr(arr, n);
    printf("\n");
}

Z góry dziękuje za pomoc :)

1 odpowiedź

+1 głos
odpowiedź 21 lutego przez DeBos123 Nałogowiec (28,090 p.)
wybrane 21 lutego przez Zaratustra
 
Najlepsza

Błąd jest w funkcji swap.

Zamiast:

*xp = *yp;

powinno być:

*xp = temp;

 

Podobne pytania

0 głosów
1 odpowiedź 68 wizyt
pytanie zadane 27 listopada 2018 w C i C++ przez MS Początkujący (430 p.)
0 głosów
1 odpowiedź 97 wizyt
pytanie zadane 2 sierpnia 2017 w C i C++ przez Jakub 0 Stary wyjadacz (12,500 p.)
0 głosów
1 odpowiedź 454 wizyt
Porady nie od parady
Zadając pytanie postaraj się o szczegółowe opisanie problemu oraz udostępnienie wszystkich istotnych informacji (kody źródłowe, zrzuty ekranu itp.).Opisanie problemu

63,237 zapytań

109,482 odpowiedzi

228,702 komentarzy

43,243 pasjonatów

Przeglądających: 289
Pasjonatów: 13 Gości: 276

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...