21xrx.com
2024-12-23 01:21:18 Monday
登录
文章检索 我的文章 写文章
我的Java排序算法体验
2023-06-11 09:57:50 深夜i     --     --
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排序算法的小伙伴有所帮助。

排序算法, 冒泡排序

  
  

评论区

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