Java 程序:分离左侧的 0 和右侧的 1
在本教程中,我们将学习如何将数组左侧的 0 和右侧的 1 分开。但是在继续之前,如果您不熟悉数组的概念,那么请务必查看 Java 中的文章数组。
输入:0 0 1 0 1 0 1 1 0 1 1 1
输出:0 0 0 1 1 1 1 1 1 1
程序 1:左边分开 0,右边分开 1
在这个方法中,我们将看到如何使用排序技术将数组左侧的 0 和右侧的 1 分开。
算法
- 开始
- 声明数组大小。
- 要求用户初始化数组大小。
- 声明数组。
- 要求用户初始化数组元素。
- 检查输入的元素是否为 0 和 1。
- 如果输入的元素不是 0 和 1,请用户再次输入。
- 如果输入的元素是 0 和 1,则使用 arrays.sort()对数组进行排序
- 这种排序将保持 0 在左侧,1 在右侧。
- 打印排序后的数组。
- 停下来。
下面的程序演示了如何使用排序技术将数组左侧的 0 和右侧的 1 分开。
import java.util.*;
import java.util.Arrays;
//Driver Code
public class Main
{
static void printElements(int arr[],int n)
{
System.out.println("Resultant Array is ");
for(int i=0;i<n;i++)
{
System.out.print(arr[i]+" ");
}
System.out.println(" ");
}
public static void main(String args[])
{
Scanner sc=new Scanner(System.in);
int n; //Declare array size
System.out.println("Enter the total number of elements ");
n=sc.nextInt(); //Initialize array size
int arr[]=new int[n]; //Declare array
System.out.println("Enter the elements of the array ");
for(int i=0; i<n ;i++) //Initialize array
{
arr[i]=sc.nextInt();
}
int flag=1;
for(int t=0;t<n;t++)
{
if(arr[t]==0 || arr[t]==1)
{
Arrays.sort(arr); //Sort the array
flag++;
}
else
{
flag=0;
}
}
if(flag==0)
{
System.out.println("Elements other than 0 and 1 are entered");
System.out.println("Please Enter Valid Inputs ");
}
else{
printElements(arr,n);
}
}
}
输入元素总数 10 输入数组的元素 0 0 1 1 1 0 0 0 结果数组是 0 0 0 1 1 1 1
程序 2:左边分开 0,右边分开 1
在这个方法中,我们将看到如何使用分离技术来分离数组左侧的 0 和右侧的 1。
算法
- 开始
- 声明数组大小。
- 要求用户初始化数组大小。
- 声明数组。
- 要求用户初始化数组元素。
- 首先检查输入的元素是否为 0 和 1。
- 如果输入的元素不是 0 和 1,请用户再次输入。
- 如果输入的元素是 0 和 1,则声明一个变量来计算零的总数。
- 使用 for 循环迭代数组的每个元素。
- 在发现 0 的地方增加计数。
- 现在,用 0 填充循环直到计数。
- 用 1 填充数组的剩余元素。
- 停止
下面的程序演示了如何使用分离技术分离数组左侧的 0 和右侧的 1。
import java.util.*;
import java.util.Arrays;
//Driver Code
public class Main
{
static void printElements(int arr[],int n)
{
System.out.println("Resultant Array is ");
for(int i=0;i<n;i++)
{
System.out.print(arr[i]+" ");
}
System.out.println(" ");
}
public static void main(String args[])
{
Scanner sc=new Scanner(System.in);
int n; //Declare array size
System.out.println("Enter the total number of elements ");
n=sc.nextInt(); //Initialize array size
int arr[]=new int[n]; //Declare array
System.out.println("Enter the elements of the array ");
for(int i=0; i<n ;i++) //Initialize array
{
arr[i]=sc.nextInt();
}
int flag=1;
for(int t=0;t<n;t++)
{
if(arr[t]==0 || arr[t]==1)
{
// Counts the no of zeros in array
int count = 0;
// Iteration over each element of the array
for (int i = 0; i < n; i++)
{
if (arr[i] == 0)
count++; // Incrementing the count
}
// Loop to fill the array with 0 until count
for (int i = 0; i < count; i++)
arr[i] = 0;
// Loop to fill the remaining array space with 1
for (int i = count; i < n; i++)
arr[i] = 1;
flag++;
}
else
{
flag=0;
}
}
if(flag==0)
{
System.out.println("Elements other than 0 and 1 are entered");
System.out.println("Please Enter Valid Inputs ");
}
else
{
printElements(arr,n);
}
}
}
输入元素总数 10 输入数组的元素 0 0 1 1 0 1 1 0 0 结果数组是 0 0 0 1 1 1 1