Pseudocod


julia123

Erfahrenes Mitglied
hi,
kann mir jemand sagen ob ich denn Pseudocod richtig übersetzt haben und ob der Algorithmus richtig ist?


ComparisonCounting-Sort(A[0::n - 1])
1 for i = 0 to n 1
2 Count[i ] = 0
3 for i = 0 to n 2
4 for j = 0 to n 1
5 if A[i ] < A[j ]
6 Count[j ] = Count[j + 1 ]
7 else
8 Count[i ] = Count[i + 1 ]
9 for i = 0 to n 1
10 S[Count[i ]] = A[i ]
11 return S


Code:
public static int[] ccsA2(int a[]) {
		int Count[] = new int[a.length+1];

		for (int i = 0; i <= a.length - 1; i++) {
			Count[i] = 0;// jede stelle des array eine 0

		}

		for (int i = 0; i <= a.length - 2; i++) {// test[]={2,1,5,6,3,4};6
			for (int j = 0; j <= a.length - 1; j++) {
				if (a[i] < a[j]) {
					Count[j] = Count[j]+1;
				} else {
					Count[i] = Count[i + 1];
				}

			}
			

		}

		int s[] = new int[a.length - 1];
		for (int i = 0; i <= a.length - 1; i++) {

			s[Count[i]] = a[i];
		}

		return s;

	}
 

Cromon

Erfahrenes Mitglied
Hey

Auf dieser Zeile:
Java:
Count[j] = Count[j]+1;

sollte es so sein:
Java:
Count[j] = Count[j+1];

Weil:
Code:
Count[j ] = Count[j + 1 ]

Grüsse
Cromon
 

julia123

Erfahrenes Mitglied
Sorry, wegen den ? und so... Hab das ganze mal händisch verbessert.

ComparisonCounting-Sort(A[0...n-1])
1 for i = 0 to n -1
2 Count[i ] = 0

3 for i = 0 to n - 2
4 for j = 0 to n - 1
5 if A[i ] < A[j ]
6 Count[j ] = Count[j + 1 ]
7 else
8 Count[i ] = Count[i + 1 ]


9 for i = 0 to n - 1
10 S[Count[i ]] = A[i ]
11 return S
 

julia123

Erfahrenes Mitglied
jo,
hab dass mit dem count angepasst jedoch funktioniert mein Programm nicht. Array wird nicht sortiert !

Code:
	public static int[] ccsA2(int a[]) {
		int Count[] = new int[a.length+1];

		//kann man weg lassen
		for (int i = 0; i <= a.length - 1; i++) {
			Count[i] = 0;

		}

		for (int i = 0; i <= a.length - 2; i++) {
			for (int j = 0; j <= a.length - 1; j++) {
				if (a[i] < a[j]) {
					Count[j] = Count[j+1];//
				} else {
					Count[i] = Count[i + 1];
				}

			}
			System.out.println(Arrays.toString(Count));

		}

		int s[] = new int[a.length - 1];
		for (int i = 0; i <= a.length - 1; i++) {

			s[Count[i]] = a[i];
		}

		return s;

	}


Ich komm wirklich nicht dahinter! Bitte hilfe
 
Zuletzt bearbeitet:

sheel

I love Asm
Hast du auch den richtigen Pseudocode?
Auf Wikipedia schaut das Ganze etwas anders aus, vor allem ohne if,
dafür mit der Bemerkung, dass der Algo nicht vergleichsbasiert ist.
 

sheel

I love Asm
"Nicht vergleichsbasiert" bedeutet, dass beim Sortieren
keine der zu sortierenden Werte direkt verglichen werden
(mit >, >=, <, <= etc.)
 

Neue Beiträge