(Java)荷兰旗问题
输入一个数组和一个数num,将数组中的数放到num的左边,相等的放在中间,比num大的放在右边。
import java.util.*;
public class HeLanQi {
public static void main (String [] args)
{
Scanner cin = new Scanner(System.in);
int num = cin.nextInt();
int arr[] = new int[5];
for (int i=0; i<arr.length; i++)
{
arr[i] = cin.nextInt();
}
heLanQi(arr, 0, arr.length-1, 5);
for (int i=0; i<arr.length; i++)
{
System.out.print(arr[i]+" ");
}
}
public static void heLanQi(int arr[], int l, int r, int num)
{
int less = l - 1;
int more = r + 1;
int cur = l;
while (cur < more)
{
if (arr[cur] < num)
swap(arr, ++less, cur++);
else if (arr[cur] > num)
swap(arr, --more, cur);
else
cur++;
}
//return new int[] {less+1, more-1};
}
public static void swap(int arr[], int a, int b)
{
int temp = arr[b];
arr[b]= arr[a];
arr[a] = temp;
}
}