21xrx.com
2024-12-23 03:35:12 Monday
登录
文章检索 我的文章 写文章
作为一名Java程序员
2023-06-17 21:26:48 深夜i     --     --

作为一名Java程序员,我认为掌握一些常见排序算法是必不可少的技能。在我的工作中,我常常需要对数据进行排序,并且需要根据不同的需求选择不同的排序算法。

下面我将介绍三种常见的排序算法及其Java代码实现:

1.冒泡排序

冒泡排序是一种基本的排序算法,它从相邻的两个元素开始比较,如果顺序不对就交换它们的位置,一轮下来最大(或最小)的元素就被排到了最后(或最前)位置。

代码实现:


public static 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.选择排序

选择排序是一种简单直观的排序算法,它每次在未排序的数列里选择一个最小(或最大)的元素放到已排序的数列末尾(或开头),直到所有元素都被排序。

代码实现:


public static 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.快速排序

快速排序是一种分治的排序算法,它通过分割数组进行排序,具有时间复杂度低、效率高的优点。

代码实现:


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

  if (left < right) {

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

    quickSort(arr, left, partitionIndex - 1);

    quickSort(arr, partitionIndex + 1, right);

  }

}

private static int partition(int[] arr, int left, int right) {

  int pivot = left; // 选取第一个元素作为基准点

  int index = pivot + 1;

  for (int i = index; i <= right; i++) {

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

      swap(arr, i, index);

      index++;

    }

  }

  swap(arr, pivot, index - 1);

  return index - 1;

}

private static void swap(int[] arr, int i, int j) {

  int temp = arr[i];

  arr[i] = arr[j];

  arr[j] = temp;

}

以上就是介绍的三种常见的排序算法及其Java代码实现。无论是在算法面试中还是日常的工作中,熟练掌握排序算法是非常有必要的。

  
  

评论区

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