21xrx.com
2024-12-22 22:28:44 Sunday
登录
文章检索 我的文章 写文章
使用Java实现常见排序算法
2023-06-11 05:33:38 深夜i     --     --
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;

}

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

  
  
下一篇: 用什么打开

评论区

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