Zahlen sortieren

Gast #4111192
Lesenswert?
• ▲
▼
Hallo, ich bin dabei etwas über Arrays zu lernen. Ich möchte das mein 
Programm 5 Zahlen ihrer Größe nach ordnet.Das macht es leider nicht. 
Hier ist mein Quellcode, vielleicht könnt ihr mir da helfen.Danke schon 
mal.

#include<iostream>
using namespace std;
int main (void)
{
int arr [5]= {17,-3,4,18,-9};
int hilf;
int i,j;

for (i=1;i <5;i++)
{
j=i;
while (j>0 & arr [ j ] <arr [ j -1 ] )
{
hilf = arr [ j ];
arr [ j ] = arr [ j - 1 ];
arr [ j - 1 ] = hilf;
j-- ;
}
}
cout << arr [ j ];
system ("Pause");
return 0;
}
#4111432
Lesenswert?
• ▲
▼
c anfänger schrieb:
> Es scheitert also an der Ausgabe.Hab schon vieles probiert jedoch kommt
> nichts gescheites bei raus

es scheitert an mehreren Sachen.
Zuerst daran, dass du beim posten keine Code tags verwendet hast.
Dann daran, dass deine Ausgabe nur ein element ausgibt.
Dann daran, dass du bit operatoren anstatt von logischen benutzt (was in 
diesem Fall aber wahrscheinlich sogar gutgeht)
Dann daran, dass du bis auf cout C anstatt c++ schreibst.

Tamy schrieb:
> Hallo,
>
> setze die Bedingung so ein
> while (j>0 & (arr [ j ] <arr [ j -1 ]) )
> {
> ---
> ---
> ---
> cout << arr [ j ];
> }

was soll es bringen einzelne Array Elemente während des Sortiervorgang 
auszugeben?

Ich würde es so in etwa schreiben:
1
#include <iostream>
2
#include <array>
3
#include <algorithm>
4

5
int main (void)
6
{
7
  std::array<int, 5> arr =  {17,-3,4,18,-9};
8
  int i,j;
9

10
  for (i=1; i < arr.size(); i++)  {
11
    for( j=i; (j>0) && (arr[j] < arr[j-1]); --j) { 
12
      std::swap(arr[j], arr[j-1]);
13
    }
14
  }
15

16
  for(const auto& s: arr){
17
     std::cout << s << ' ';
18
  }
19

20
  system ("Pause");
21
  return 0;
22
}
Moderator #4111550
Lesenswert?
• ▲
▼
Torsten Robitzki schrieb:
> Wenn C++ dann C++:
>
>  std::sort( arr.begin(), arr.end() );
>
> Bubble Sort ist echt nicht aus den Köpfen heraus zu bekommen ;-)

Darum geht es primär doch gar nicht:

c anfänger schrieb:
> Hallo, ich bin dabei etwas über Arrays zu lernen.

Aber selbst wenn er etwas über Sortieralgorithmen lernen wollte: Wird er
sein Ziel erreichen, wenn er einfach eine fertige Bibliotheksfunktion
aufruft? ;-)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren