21xrx.com
2024-11-06 03:44:32 Wednesday
登录
文章检索 我的文章 写文章
我最近在学习Java中的排序算法
2023-06-11 01:15:20 深夜i     --     --

我最近在学习Java中的排序算法,想和大家分享一下一些常见的排序算法和它们的复杂度。在Java中,有很多种排序方法,其中包括冒泡排序、插入排序、选择排序、归并排序、快速排序等等。

其中,冒泡排序是最简单的排序算法之一。它的基本思想是比较相邻的元素,如果第一个比第二个大,就交换它们。代码如下:


public void bubbleSort(int[] arr) {

 int n = arr.length;

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

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

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

    int temp = arr[j];

    arr[j] = arr[j + 1];

    arr[j + 1] = temp;

   }

  }

 }

}

另一个比较常用的排序算法是快速排序。快速排序的基本思想是选择一个基准元素,然后将小于它的元素放在左边,大于它的元素放在右边,最后递归地对左右两个子序列进行排序。代码如下:


public void quickSort(int[] arr, int left, int right) {

 if (left >= right)

  return;

 

 int pivot = partition(arr, left, right);

 quickSort(arr, left, pivot - 1);

 quickSort(arr, pivot + 1, right);

}

public int partition(int[] arr, int left, int right) {

 int pivot = arr[right];

 int i = left;

 for (int j = left; j < right; j++) {

  if (arr[j] < pivot) {

   int temp = arr[i];

   arr[i] = arr[j];

   arr[j] = temp;

   i++;

  }

 }

 int temp = arr[i];

 arr[i] = arr[right];

 arr[right] = temp;

 return i;

}

最后一个要介绍的排序算法是归并排序。归并排序的基本思想是将数列分成两半,分别排序,最后将这两个已经排好序的子序列合并。以下是归并排序的代码:


public void mergeSort(int[] arr, int left, int right) {

 if (left < right) {

  int mid = (left + right) / 2;

  mergeSort(arr, left, mid);

  mergeSort(arr, mid + 1, right);

  merge(arr, left, mid, right);

 }

}

public void merge(int[] arr, int left, int mid, int right) {

 int[] temp = new int[right - left + 1];

 int i = left, j = mid + 1, k = 0;

 while (i <= mid && j <= right) {

  if (arr[i] < arr[j]) {

   temp[k++] = arr[i++];

  } else {

   temp[k++] = arr[j++];

  }

 }

 while (i <= mid) {

  temp[k++] = arr[i++];

 }

 while (j <= right) {

  temp[k++] = arr[j++];

 }

 for (int p = 0; p < temp.length; p++) {

  arr[left + p] = temp[p];

 }

}

以上就是我介绍的一些Java中常用的排序算法,包括冒泡排序、快速排序和归并排序。通过学习这些算法,可以更好地理解Java中的排序方法,并能够根据不同的情况选择合适的排序算法。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复