我一直在努力工作,这一点:
说我有一个数组:
int[] n = {0, 0, -1, 1, 0, 1, 1, -1, 1};
我需要能够通过数组排序,如果有一个非零它之前是零,那么他们应该被交换。
例如: 0, 0, -1, 1, 0, 1, 1, -1, 1
将成为: 0, 0, -1, 0, 1, 1, 1, -1, 1
我一直在想它采用了一块来做for
循环, if
没有运气语句。 有小费吗?
我一直在努力工作,这一点:
说我有一个数组:
int[] n = {0, 0, -1, 1, 0, 1, 1, -1, 1};
我需要能够通过数组排序,如果有一个非零它之前是零,那么他们应该被交换。
例如: 0, 0, -1, 1, 0, 1, 1, -1, 1
将成为: 0, 0, -1, 0, 1, 1, 1, -1, 1
我一直在想它采用了一块来做for
循环, if
没有运气语句。 有小费吗?
尝试这个:
for (int i = 1 ; i < n.length ; i++)
if (n[i] == 0 && n[i - 1] != 0) {
int tmp = n[i - 1];
n[i - 1] = n[i];
n[i] = tmp;
}
你是正确的思维,你会需要一个for
循环利用if
在它的身上声明。 所有我们在这里所做的是通过数组循环开始元素1.然后,我们检查,如果我们目前的元素是0
和以前的元素不是0
:即if (n[i] == 0 && n[i - 1] != 0)
如果这种情况是真的,我们交换这两个元素。
for(int i=0; i < length; i++)
{
if(i > 0 && arr[i] == 0 && arr[i-1] != 0)
{
int temp = arr[i-1];
arr[i-1] = arr[i];
arr[i] = temp;
}
}
应该管用。
如果不使用位操作,你需要一个临时变量来交换两个对象。 例:
int[] n = {...};
int temp = n[3]; // swaps n[3] and n[4]
n[3] = n[4];
n[4] = temp;
你可以坚持这样的事情你的循环中完成你所描述的。
public class Swaparray
{
public static void main(String []args)
{
int [] arr={0,1,2,3,4,5,6,7};
Swaparray.displayArray(arr);
for(int i=1;i<arr.length;i++)
{
while(arr[i]%2!=0)
{
int tmp = arr[i - 1];
arr[i - 1] = arr[i];
arr[i] = tmp;
}
}
Swaparray.displayArray(arr);
}
static void displayArray(int[]arr)
{
System.out.print("Array elements are: ");
for(int i=0;i<arr.length;i++) {
System.out.print(arr[i]+" "); }
System.out.println();
}
}
O / P数组元素为:0 1 2 3 4 5 6 7数组元素为:1 0 3 2 5 4 7 6
交换在阵列中的两个连续元素
int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int length = arr.length;
int temp;
for (int i = 0; i < length/2; i++)
{
temp = arr[i];
arr[i] = arr[length - i - 1];
arr[length - i - 1] = temp;
}
for (int element:arr)
{
System.out.println (element);
}