私は2色と3色の解決策を検討しましたが、4色では解決できません。4色のオランダ国旗
助けてください。
rrbb????yyyggg
ですか? 緑の旗はどうやって交換するのですか?
私は以下の解決策を試しましたが、最後の黄色を緑色に交換することはできません。
public class count123 {
// Java program to sort an array of 0, 1 and 2,3
static void sort0123(int a[], int arr_size)
{
int lo = 0;
int hi = arr_size - 1;
int mid = 0,temp=0;
int h2=arr_size - 1;
while (mid <= hi)
{
switch (a[mid])
{
case 0:
{
temp = a[lo];
a[lo] = a[mid];
a[mid] = temp;
lo++;
mid++;
break;
}
case 1:
mid++;
break;
case 2:
{
temp = a[mid];
a[mid] = a[hi];
a[hi] = temp;
hi--;
h2=hi;
break;
}
case 3:{
temp = a[mid];
a[mid] = a[h2];
a[h2] = temp;
// h2--;
//hi=h2;
break;
}
}
}
}
/* Utility function to print array arr[] */
static void printArray(int arr[], int arr_size)
{
int i;
for (i = 0; i < arr_size; i++)
System.out.print(arr[i]+" ");
System.out.println("");
}
/*Driver function to check for above functions*/
public static void main (String[] args)
{
int arr[] = {0, 1, 0,1,2,2,0,3,3,0,0,1};
int arr_size = arr.length;
sort0123(arr, arr_size);
System.out.println("Array after seggregation ");
printArray(arr, arr_size);
}
}
/*This code is contributed by Devesh Agrawal*/
なぜこのような複雑な方法でそれをしたいですか?任意の整数を扱うことができる適切なソートアルゴリズムを使用するか、本当に4つの値が必要な場合は、最も単純なバケットソートを使用します(リスト内に何個の0,1,2,3があるかをカウントし、それに応じて再作成します)。 –