把数组元素全部移到最左边,其余顺序不变
时间: 2024-09-23 21:14:44 浏览: 8
要将数组中的所有元素移动到最左边(即数组的第一个位置),同时保持其他元素的相对顺序不变,你可以使用双指针的方法,一个指向开始位置(index = 0),另一个从数组末尾开始遍历。对于每个元素,如果它大于当前索引处的元素,就交换它们的位置。
以下是一个简单的Java示例:
```java
public class MoveElements {
public static void moveToFront(int[] arr) {
if (arr == null || arr.length == 0) {
return;
}
int start = 0, end = arr.length - 1;
while (start < end) {
// 如果末尾元素大于或等于起始位置的元素,则不需要交换
if (arr[end] >= arr[start]) {
end--;
} else {
// 交换两个元素并更新指针
swap(arr, start, end);
start++;
end--;
}
}
}
private static void swap(int[] arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
public static void main(String[] args) {
int[] testArray = {5, 3, 7, 1, 9};
moveToFront(testArray);
for (int num : testArray) {
System.out.print(num + " ");
}
}
}
// 运行结果将会是:9 7 5 3 1
```
这个程序首先检查数组是否为空或长度为0,然后创建两个指针start和end,分别从第一个位置和最后一个位置开始。当start小于end时,比较这两个元素,如果末尾元素小于起始元素,则交换并将start向前移动一位,直到整个数组处理完。