int m = B.length;
int[] array = new int[m];
for (int i=0,i<m;i++) {
array[i] = A[ B[i] ];
}
import java.util.Arrays;
public class MusterSortTest
{
public static void arrayMusterSort(int[] array, int[] muster)
{
if(array.length == muster.length && array.length > 0) {
array[0] = rec(array, muster, 0);
}
}
public static int rec(int[] array, int[] muster, int n)
{
int ret = array[muster[n] - 1];
if(++n < array.length) {
array[n] = rec(array, muster, n);
}
return ret;
}
public static void main(String[] args)
{
int[] A = new int[]{18, 4, 2, 7};
int[] B = new int[]{4, 1, 3, 2};
System.out.println("Vor Sortierung: " + Arrays.toString(A));
arrayMusterSort(A, B);
System.out.println("Nach Sortierung: " + Arrays.toString(A));
}
}
public static void arrayMusterSort2(int[] array, int[] muster)
{
if(array.length != muster.length) {
return;
}
for(int i = 0; i < muster.length; ++i) {
muster[i] = array[muster[i] - 1];
}
for(int i = 0; i < muster.length; ++i) {
array[i] = muster[i];
}
}
import java.util.Arrays;
public class Aufgabe_4_Korrekt {
public static void main(String[] args) {
int[] X = {88,66,77,11,55};
int[] A = {1,3,2,5,4};
X = Quicksort(A, X, 0, X.length-1);
System.out.println(Arrays.toString(X));
}
public static int[] Quicksort(int[] a, int[] x, int l, int r){
if (l<r) {
int teiler = partition(a, x, l,r);
Quicksort(a, x, l, teiler-1);
Quicksort(a, x, teiler+1, r);
}
return x;
}
public static int partition(int[] a, int[] x, int l, int r){
int i = l, j = r-1, pivot = a[r];
do{
while ((a[i] <= pivot) && (i<r)) i++;
while ((a[j] >= pivot) && (j>l)) j--;
if (i<j) {
int temp = a[i];
a[i] = a[j];
a[j] = temp;
temp = x[i];
x[i] = x[j];
x[j] = temp;
i++; j--;
}
} while (i<j);
if (a[i]>pivot) {
int temp = a[i];
a[i] = a[r];
a[r] = temp;
temp = x[i];
x[i] = x[r];
x[r] = temp;
}
return i;
}
}
X = {88,66,77,11,55};
A = {1,3,2,5,4};
Also es sollte {88,77,66,55,11} rauskommen, da der Wert von A den Index von X im "neuen" Array angibt.
public static void main(String[] args)
{
int[] A = new int[]{18, 4, 2, 7};
int[] B = new int[]{4, 1, 3, 2};
System.out.println("Vor Sortierung: " + Arrays.toString(A));
A = Quicksort(B, A, 0, A.length - 1);
System.out.println("Nach Sortierung: " + Arrays.toString(A));
}
Vor Sortierung: [18, 4, 2, 7]
Nach Sortierung: [4, 7, 2, 18]
Nach Sortierung: [7, 18, 2, 4]
sodass am Ende A=4,7,2,18 ist
Man ich habe die ganze Zeit den Sortieralgorithmus nicht geschnallt.Gesucht ist ein Sortieralgorithmus, sodass am Ende A=4,7,2,18 ist.