Java排序方法有哪些?
在Java编程中,对数据进行排序是非常常见的需求,Java提供了多种排序方法,包括内置的排序方法和自定义排序方法,本文将介绍Java中的几种常用排序方法,包括冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序和堆排序。
1、冒泡排序(Bubble Sort)
冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来,遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
public static void bubbleSort(int[] arr) { for (int i = 0; i < arr.length 1; i++) { for (int j = 0; j < arr.length 1 i; j++) { if (arr[j] > arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } }
2、选择排序(Selection Sort)
选择排序是一种简单直观的排序算法,它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。
public static void selectionSort(int[] arr) { for (int i = 0; i < arr.length 1; i++) { int minIndex = i; for (int j = i + 1; j < arr.length; j++) { if (arr[j] < arr[minIndex]) { minIndex = j; } } if (minIndex != i) { int temp = arr[i]; arr[i] = arr[minIndex]; arr[minIndex] = temp; } } }
3、插入排序(Insertion Sort)
插入排序是一种简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。
public static void insertionSort(int[] arr) { for (int i = 1; i < arr.length; 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; } }
4、希尔排序(Shell Sort)
希尔排序是一种基于插入排序的高效排序算法,它首先对原始数据进行分组,将待排序的数据按照一定的增量分组;然后对每组数据进行插入排序;最后通过不断缩小增量的方式,对各组数据进行插入排序直至整个序列有序。
public static void shellSort(int[] arr) { int gap = getGap(arr); // 获取增量值 while (gap > 0) { // 当增量大于0时,继续插入排序 for (int i = gap; i < arr.length; i++) { // 对每组数据进行插入排序 int key = arr[i]; // 将当前元素作为关键字 int j = i; // 从当前位置开始向左寻找关键字的位置 while (j >= gap && arr[j gap] > key) { // 如果左边有更大的关键字,则将左边的关键字向右移动一位 arr[j] = arr[j gap]; j -= gap; } arr[j] = key; // 将关键字插入到正确的位置上 } gap = getGap(arr); // 继续缩小增量值,进行下一次插入排序 } }
5、归并排序(Merge Sort)
归并排序是一种采用分治法的高效排序算法,它将待排序的序列分为两个子序列,对子序列分别进行归并排序;然后将有序的子序列合并成一个有序的序列。
public static void mergeSort(int[] arr, int left, int right) { if (left < right) { // 如果左边界小于右边界,则进行递归分割和合并操作 int mid = (left + right) >>> 1; // 计算中间位置的索引值 mergeSort(arr, left, mid); // 对左半部分进行归并排序 mergeSort(arr, mid + 1, right); // 对右半部分进行归并排序 merge(arr, left, mid, right); // 将两个有序子序列合并成一个有序序列 } }
6、快速排序(Quick Sort)
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/217504.html