21xrx.com
2025-03-25 15:22:44 Tuesday
文章检索 我的文章 写文章
我的Java排序算法体验
2023-06-11 09:57:50 深夜i     9     0
Java

我最近在学习Java排序算法,发现了一些很有意思的东西。Java中有很多种排序算法,如冒泡排序、插入排序、选择排序、快速排序等等。这些算法有些开发者老早以前学习过,但也有些可能是第一次接触,因此,我想分享一下我的体验。

首先,我想讲一下冒泡排序。冒泡排序算法是将要排序的数据循环比较过程中,将最大的数放到最后,依次缩小排序范围直到排序完成。下面是Java的冒泡排序代码:

public static void bubbleSort(int[] arr) {
  int temp;
  boolean swapped;
  for (int i = 0; i < arr.length - 1; i++) {
    swapped = false;
    for (int j = 0; j < arr.length - i - 1; j++) {
      if (arr[j] > arr[j + 1]) {
        temp = arr[j];
        arr[j] = arr[j + 1];
        arr[j + 1] = temp;
        swapped = true;
      }
    }
    if (swapped == false)
      break;
  }
}

接下来是选择排序。选择排序是一种简单直观的排序算法。它的工作原理是:首先在未排序的序列中找到最小元素,然后将其存放到序列的起始位置,然后再从剩余未排序的元素中继续寻找最小元素,然后放到已排序的序列的末尾。以此类推,直到排序完毕。下面是Java选择排序代码:

public static void selectionSort(int[] arr) {
  int minIndex, temp;
  for (int i = 0; i < arr.length - 1; i++) {
    minIndex = i;
    for (int j = i + 1; j < arr.length; j++) {
      if (arr[j] < arr[minIndex])
        minIndex = j;
      
    }
    if (minIndex != i) {
      temp = arr[i];
      arr[i] = arr[minIndex];
      arr[minIndex] = temp;
    }
  }
}

最后是快速排序,它是最常用的排序算法之一,利用分治法思想把一个数组分成两个子数组,然后递归地对这两个子数组进行排序。下面是Java快速排序代码:

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

这是我对Java排序算法的一些总结。不同的排序算法适合不同的场合,在实际开发过程中,需根据需求选择不同的排序算法。Java排序算法是JAVA开发中非常重要的一块内容,希望对正在学习Java排序算法的小伙伴有所帮助。

排序算法, 冒泡排序

  
  

评论区