21xrx.com
2025-03-23 01:20:38 Sunday
文章检索 我的文章 写文章
使用Java实现常见排序算法
2023-06-11 05:33:38 深夜i     8     0
Java 排序算法 代码

我最近在学习Java编程,并有兴趣了解不同的排序算法。在这篇文章中,我会介绍一些实现这些算法的Java代码,并分享我的经验。

首先,我想介绍冒泡排序算法。冒泡排序是一种基础的排序算法,它的原理很简单:循环遍历数组,比较相邻元素的大小,若顺序错误则交换两个元素的位置。

下面是代码示例:

public static 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]) {
        //swap arr[j] and arr[j+1]
        int temp = arr[j];
        arr[j] = arr[j+1];
        arr[j+1] = temp;
      }
    }
  }
}

第二个排序算法是插入排序。该算法将未排序的元素一个一个地插入到已排序的位置。这个算法的时间复杂度通常是O(n²)。下面是代码示例:

public static void insertionSort(int[] arr) {
  int n = arr.length;
  for(int i = 1; i < n; i++) {
    int key = arr[i];
    int j = i - 1;
    while(j >= 0 && arr[j] > key) {
      arr[j+1] = arr[j];
      j--;
    }
    arr[j+1] = key;
  }
}

最后一个排序算法是快速排序。这个算法使用分治法的思想和递归算法来排序一个数组。该算法的时间复杂度通常是O(n*log(n))。下面是代码示例:

public static void quickSort(int[] arr, int low, int high) {
  if(low < high) {
    int pivot = partition(arr, low, high);
    quickSort(arr, low, pivot-1);
    quickSort(arr, pivot+1, high);
  }
}
public static int partition(int[] arr, int low, int high) {
  int pivot = arr[high];
  int i = low - 1;
  for(int j = low; j < high; j++) {
    if(arr[j] <= pivot) {
      i++;
      //swap arr[i] and arr[j]
      int temp = arr[i];
      arr[i] = arr[j];
      arr[j] = temp;
    }
  }
  //swap arr[i+1] and arr[high]
  int temp = arr[i+1];
  arr[i+1] = arr[high];
  arr[high] = temp;
  return i+1;
}

通过这篇文章,我学习并实现了三种不同的排序算法。冒泡排序、插入排序和快速排序每个都有它们自己的优点和适用场景。我期待在今后不断探索和学习更多的算法和数据结构。

  
  
下一篇: 用什么打开

评论区

请求出错了