admin 管理员组

文章数量: 887503


2024年1月11日发(作者:易语言点程序自动更新)

java中数组排序的方法

Java中有多种方法可以对数组进行排序。本文将介绍几种常用的数组排序方法,包括冒泡排序、选择排序、插入排序、快速排序和归并排序。

1. 冒泡排序(Bubble Sort)

冒泡排序是一种简单但低效的排序算法。它重复地遍历数组,每次比较相邻的两个元素,如果顺序错误就交换它们。通过多次遍历,最大(或最小)的元素就会逐渐“冒泡”到数组的末尾。冒泡排序的时间复杂度为O(n^2)。

冒泡排序的实现代码如下:

```java

public static void bubbleSort(int[] array) {

int n = ;

for (int i = 0; i < n - 1; i++) {

for (int j = 0; j < n - i - 1; j++) {

if (array[j] > array[j + 1]) {

int temp = array[j];

array[j] = array[j + 1];

array[j + 1] = temp;

}

}

}

}

```

2. 选择排序(Selection Sort)

选择排序也是一种简单的排序算法。它将数组分为已排序和未排序两部分,每次从未排序部分选择最小(或最大)的元素,并将其放到已排序部分的末尾。通过多次选择,整个数组就会逐渐有序。选择排序的时间复杂度为O(n^2)。

选择排序的实现代码如下:

```java

public static void selectionSort(int[] array) {

int n = ;

for (int i = 0; i < n - 1; i++) {

int minIndex = i;

for (int j = i + 1; j < n; j++) {

if (array[j] < array[minIndex]) {

minIndex = j;

}

}

int temp = array[i];

array[i] = array[minIndex];

array[minIndex] = temp;

}

}

```

3. 插入排序(Insertion Sort)

插入排序是一种简单且高效的排序算法。它将数组分为已排序和未排序两部分,每次从未排序部分选择一个元素,并将其插入到已排序部分的正确位置。通过多次插入,整个数组就会逐渐有序。插入排序的时间复杂度为O(n^2)。

插入排序的实现代码如下:

```java

public static void insertionSort(int[] array) {

int n = ;

for (int i = 1; i < n; i++) {

int key = array[i];

int j = i - 1;

while (j >= 0 && array[j] > key) {

array[j + 1] = array[j];

j--;

}

array[j + 1] = key;

}

}

```

4. 快速排序(Quick Sort)

快速排序是一种常用且高效的排序算法。它通过选择一个基准元素,将数组分为左右两部分,左边的元素都小于等于基准,右边的元素都大于等于基准,然后对左右两部分递归地进行快速排序。快速排序的时间复杂度为O(nlogn)。

快速排序的实现代码如下:

```java

public static void quickSort(int[] array, int low, int high)

{

if (low < high) {

int pivotIndex = partition(array, low, high);

quickSort(array, low, pivotIndex - 1);

quickSort(array, pivotIndex + 1, high);

}

}

public static int partition(int[] array, int low, int high)

{

int pivot = array[high];

int i = low - 1;

for (int j = low; j < high; j++) {

if (array[j] <= pivot) {

i++;

int temp = array[i];

array[i] = array[j];

array[j] = temp;

}

}

int temp = array[i + 1];

array[i + 1] = array[high];

array[high] = temp;

return i + 1;

}

```

5. 归并排序(Merge Sort)

归并排序是一种高效的排序算法。它通过将数组递归地拆分为两个子数组,然后将两个已排序的子数组合并为一个有序数组。归并排序的时间复杂度为O(nlogn)。

归并排序的实现代码如下:

```java

public static void mergeSort(int[] array, int low, int high)

{

if (low < high) {

int mid = (low + high) / 2;

mergeSort(array, low, mid);

mergeSort(array, mid + 1, high);

merge(array, low, mid, high);

}

}

public static void merge(int[] array, int low, int mid, int

high) {

int n1 = mid - low + 1;

int n2 = high - mid;

int[] leftArray = new int[n1];

int[] rightArray = new int[n2];

for (int i = 0; i < n1; i++) {

leftArray[i] = array[low + i];

}

for (int j = 0; j < n2; j++) {

rightArray[j] = array[mid + 1 + j];

}

int i = 0, j = 0;

int k = low;

while (i < n1 && j < n2) {

if (leftArray[i] <= rightArray[j]) {

array[k] = leftArray[i];

i++;

} else {

array[k] = rightArray[j];

j++;

}

k++;

}

while (i < n1) {

array[k] = leftArray[i];

i++;

k++;

}

while (j < n2) {

array[k] = rightArray[j];

j++;

k++;

}

}

```

以上就是几种常用的数组排序方法的实现代码。在实际应用中,根据实际情况选择合适的排序算法可以提高程序的效率。希望本文对您理解和掌握数组排序方法有所帮助。


本文标签: 排序 数组 选择