21xrx.com
2024-12-22 23:02:29 Sunday
登录
文章检索 我的文章 写文章
Java常用排序算法及实现
2023-06-15 10:16:04 深夜i     --     --
Java排序算法 冒泡排序 选择排序 插入排序 快速排序

排序算法指的是将一组数据按照特定规则排序的算法,是程序员必备基本功。Java中提供了比较器接口和排序类库,可以非常方便地对数据进行排序。下面介绍几种常见的排序算法及其Java代码实现。

1. 冒泡排序

冒泡排序是一种简单的,效率低下的排序算法。依次比较相邻两个元素,如果前一个比后一个大,就交换它们的位置,每次排序都能找到当前未排序部分中最大的元素。

Java代码实现:


public void bubbleSort(int[] arr) {

  int len = arr.length;

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

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

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

        int temp = arr[j];

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

        arr[j + 1] = temp;

      }

    }

  }

}

2. 选择排序

选择排序也是一种简单的排序算法。不断地选择剩余元素中最小的,并将其放在已排序部分的末尾。

Java代码实现:


public void selectionSort(int[] arr) {

  int len = arr.length;

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

    int minIndex = i;

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

      if (arr[j] < arr[minIndex])

        minIndex = j;

      

    }

    if (minIndex != i) {

      int temp = arr[i];

      arr[i] = arr[minIndex];

      arr[minIndex] = temp;

    }

  }

}

3. 插入排序

插入排序是一种稳定的排序算法。将未排序的元素按顺序插入已排序部分的适当位置。

Java代码实现:


public void insertionSort(int[] arr) {

  int len = arr.length;

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

    int temp = arr[i];

    int j = i - 1;

    while (j >= 0 && arr[j] > temp) {

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

      j--;

    }

    arr[j + 1] = temp;

  }

}

4. 快速排序

快速排序是一种分治算法。通过选择一个基准值,将元素分为两个部分,然后递归地对这两个部分进行排序。

Java代码实现:


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

  if (left >= right)

    return;

  

  int i = left, j = right, pivot = arr[(left + right) / 2];

  while (i <= j) {

    while (arr[i] < pivot) {

      i++;

    }

    while (arr[j] > pivot)

      j--;

    

    if (i <= j) {

      int temp = arr[i];

      arr[i] = arr[j];

      arr[j] = temp;

      i++;

      j--;

    }

  }

  quickSort(arr, left, j);

  quickSort(arr, i, right);

}

  
  

评论区

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