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;

	}
 
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
 
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
 
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:
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.
 
"Nicht vergleichsbasiert" bedeutet, dass beim Sortieren
keine der zu sortierenden Werte direkt verglichen werden
(mit >, >=, <, <= etc.)
 
Zurück