java中一维数组排序代码
时间: 2023-05-25 14:07:18 浏览: 70
以下是一个使用Java中的Arrays类对一维数组进行排序的示例代码:
```
import java.util.Arrays;
public class ArraySortExample {
public static void main(String[] args) {
int[] arr = { 5, 2, 8, 7, 1 };
Arrays.sort(arr);
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
}
```
输出结果:
```
1 2 5 7 8
```
在这个例子中,我们首先创建了一个int类型的一维数组arr,并初始化了其中的值。然后,我们使用Arrays类中的sort方法对数组进行排序。最后,我们使用for循环遍历数组并打印出每个元素的值。
需要注意的是,Arrays类中的sort方法会对数组进行原地排序,也就是说它会直接修改数组中的元素,而不是创建一个新的排好序的数组。如果你不希望原来的数组被修改,可以先复制一个新的数组再对它进行排序。
相关问题
Java中一维数组选择排序如何排序
一维数组选择排序的基本思路是:每一次外层循环选择一个最小的数,然后将其与当前位置的数进行交换。
以下是Java中一维数组选择排序的代码实现:
```java
public static void selectionSort(int[] array) {
int len = array.length;
for (int i = 0; i < len - 1; i++) {
int minIndex = i; //记录最小值的下标
for (int j = i + 1; j < len; j++) {
if (array[j] < array[minIndex]) {
minIndex = j;
}
}
//将最小值与当前位置进行交换
int temp = array[i];
array[i] = array[minIndex];
array[minIndex] = temp;
}
}
```
在上述代码中,我们首先定义了一个外层循环,用于选择当前未排序部分的最小值。然后,在内层循环中,我们遍历当前未排序部分的所有数,找到其中的最小值,并记录其下标。最后,我们将最小值与当前位置进行交换。
使用示例:
```java
int[] array = {5, 2, 6, 9, 1};
selectionSort(array);
System.out.println(Arrays.toString(array));
//输出结果为:[1, 2, 5, 6, 9]
```
Java实现二维数组归并排序代码
下面是 Java 实现二维数组归并排序的代码:
```java
public class MergeSort2DArray {
public static void main(String[] args) {
int[][] arr = {{3, 4}, {1, 2}, {5, 6}, {4, 3}, {2, 1}};
int[][] sortedArr = mergeSort2D(arr);
for (int[] row : sortedArr) {
System.out.println(Arrays.toString(row));
}
}
public static int[][] mergeSort2D(int[][] arr) {
if (arr.length <= 1) {
return arr;
}
int mid = arr.length / 2;
int[][] left = Arrays.copyOfRange(arr, 0, mid);
int[][] right = Arrays.copyOfRange(arr, mid, arr.length);
return merge2D(mergeSort2D(left), mergeSort2D(right));
}
public static int[][] merge2D(int[][] arr1, int[][] arr2) {
int[][] result = new int[arr1.length + arr2.length][2];
int i = 0, j = 0, k = 0;
while (i < arr1.length && j < arr2.length) {
if (arr1[i][0] < arr2[j][0] || (arr1[i][0] == arr2[j][0] && arr1[i][1] < arr2[j][1])) {
result[k++] = arr1[i++];
} else {
result[k++] = arr2[j++];
}
}
while (i < arr1.length) {
result[k++] = arr1[i++];
}
while (j < arr2.length) {
result[k++] = arr2[j++];
}
return result;
}
}
```
这里的 `mergeSort2D` 函数和一般的归并排序类似,都是递归地将数组拆分成更小的部分,然后对这些部分进行排序。而 `merge2D` 函数是用来合并两个有序的一维数组,并且这里的一维数组是形如 `[x, y]` 的二元组,其中 `x` 是第一关键字,`y` 是第二关键字。
在合并两个一维数组时,先比较它们的第一关键字,如果相同则再比较第二关键字,然后按顺序合并成一个新的有序数组。
最后,调用 `mergeSort2D` 函数就可以对二维数组进行归并排序了。