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++;
}
}
```
以上就是几种常用的数组排序方法的实现代码。在实际应用中,根据实际情况选择合适的排序算法可以提高程序的效率。希望本文对您理解和掌握数组排序方法有所帮助。
版权声明:本文标题:java中数组排序的方法 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1704959567h468093.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论