Zahlen im Array sortieren

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Zahlen im Array sortieren

    Hallo @ all

    WIr sollten heute in der Schule in einem Array die Zahlen sortieren. Dachte mir das so:
    Z1<Z2 dann => tauschen und wieder von vorne anfangen. Habe so einen COde geschrieben.

    Quellcode

    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. #include <time.h>
    4. void tausche(int *piArray1, int *piArray2)
    5. {
    6. int iTemp;
    7. iTemp = *piArray1;
    8. *piArray1 = *piArray2;
    9. *piArray2 = iTemp;
    10. }
    11. void Sortieren(int *paiArray, int iAnzahl)
    12. {
    13. int iX;
    14. for (iX=0; iX<iAnzahl-1; iX++)
    15. {
    16. if (paiArray[iX]>paiArray[iX+1])
    17. {
    18. tausche(&paiArray[iX], &paiArray[iX+1]);
    19. iX=0;
    20. }
    21. }
    22. }
    23. void Feldausgabe(int *paiArray, int iAnzahl)
    24. {
    25. int iX;
    26. for(iX=0;iX<iAnzahl;iX++)
    27. {
    28. if (iX<9)
    29. {
    30. printf("0%d. Zahl: %d\n",iX+1, paiArray[iX]);
    31. }
    32. else
    33. {
    34. printf("%d. Zahl: %d\n",iX+1, paiArray[iX]);
    35. }
    36. }
    37. }
    38. void Feldeingabe(int *paiArray, int iAnzahl)
    39. {
    40. int iX;
    41. for(iX=0; iX<iAnzahl; iX++)
    42. {
    43. paiArray[iX]=rand()%100+1;
    44. }
    45. }
    46. int main(void)
    47. {
    48. int aiArray[100];
    49. int iAnzahl=100;
    50. srand(time(0));
    51. Feldeingabe(aiArray, iAnzahl);
    52. Sortieren(aiArray, iAnzahl);
    53. Feldausgabe(aiArray, iAnzahl);
    54. getchar();
    55. }
    Alles anzeigen


    Ein Problem ist aber noch drin. Wenn Zahl1 < Zahl2 bleibt diese an der Stelle stehen. Wenn Z1 > Z2 kommt Z2 an erste Stelle und beibt da auch immer Stehen. Sieht so aus als ob sie nicht mehr überprüft wird. Obwohl die Schleife ja immer bei 0 startet. Alle anderen Zahlen werden erfolgreich geordnet. Was ist daran falsch?

    EDIT: Habe den Fehler gefunden. Setze iX=0 aber wenn die Schleife durchgelaufen ist setzt er sich wieder auf 1. Also iX=-1. Jetzt gehts.

    Hoffe auf euer Hilfe. Viele Grüße
    Crosaider

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Crosaider ()