以下是Java中常见的两种排序算法示例:冒泡排序和快速排序。
- 冒泡排序(Bubble Sort): 冒泡排序是一种简单的排序算法,它重复地遍历待排序的元素,在每次遍历中比较相邻的两个元素,并交换顺序,直到整个数组排序完成。具体实现如下:
public class BubbleSort {
public static void main(String[] args) {
int[] arr = {5, 2, 8, 12, 3};
bubbleSort(arr);
// 输出排序结果
for (int num : arr) {
System.out.print(num + " ");
}
}
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]) {
// 交换元素
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
}
- 快速排序(Quick Sort): 快速排序是一种高效的排序算法,它采用分治的思想,通过选择一个基准元素,将数组分成两部分,使得左侧部分的元素都小于基准元素,右侧部分的元素都大于基准元素,然后递归对左右两部分进行排序。具体实现如下:
public class QuickSort {
public static void main(String[] args) {
int[] arr = {5, 2, 8, 12, 3};
quickSort(arr, 0, arr.length - 1);
// 输出排序结果
for (int num : arr) {
System.out.print(num + " ");
}
}
public static void quickSort(int[] arr, int low, int high) {
if (low < high) {
// 分区操作,将数组分为两个子数组
int pivotIndex = partition(arr, low, high);
// 递归排序左子数组和右子数组
quickSort(arr, low, pivotIndex - 1);
quickSort(arr, pivotIndex + 1, high);
}
}
private static int partition(int[] arr, int low, int high) {
// 选择最右边的元素作为基准
int pivot = arr[high];
// 指针i指向小于基准的位置
int i = low - 1;
// 从左到右遍历数组,将小于基准的元素放到指针i的位置
for (int j = low; j < high; j++) {
if (arr[j] < pivot) {
i++;
swap(arr, i, j);
}
}
// 将基准元素放到指针i的位置后面
swap(arr, i + 1, high);
return i + 1;
}
private static void swap(int[] arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
这两个示例分别展示了冒泡排序和快速排序的实现方法。通过调用bubbleSort方法可以对数组进行冒泡排序,调用quickSort方法可以对数组进行快速排序。注意,在快速排序中使用了分区函数partition来选择基准元素,并对数组进行分区操作。
© 版权声明
本站资源来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!
THE END