网站建设费用包括哪些,公关公司网站,wordpress rss,珠海软件开发公司在Java编程中#xff0c;实现常见的排序算法是一项基础而重要的任务。排序算法是计算机科学中的经典问题之一#xff0c;涉及将一组元素按照某个顺序进行排列。Java提供了一种非常灵活的编程环境#xff0c;可以用来实现各种排序算法。
冒泡排序#xff08;Bubble Sort实现常见的排序算法是一项基础而重要的任务。排序算法是计算机科学中的经典问题之一涉及将一组元素按照某个顺序进行排列。Java提供了一种非常灵活的编程环境可以用来实现各种排序算法。
冒泡排序Bubble Sort
冒泡排序是一种简单的排序算法它重复地遍历待排序数组比较相邻的两个元素如果它们的顺序不对则交换它们。这个过程持续进行直到整个数组都是有序的。
public class BubbleSort {public static void bubbleSort(int[] array) {int n array.length;for (int i 0; i n - 1; i) {for (int j 0; j n - i - 1; j) {if (array[j] array[j 1]) {// 交换array[j]和array[j1]int temp array[j];array[j] array[j 1];array[j 1] temp;}}}}public static void main(String[] args) {int[] array {64, 34, 25, 12, 22, 11, 90};bubbleSort(array);System.out.println(Sorted array: Arrays.toString(array));}
}选择排序Selection Sort
选择排序是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小或最大的一个元素存放在序列的起始位置然后再从剩余的未排序元素中寻找最小或最大元素依次类推。
public class SelectionSort {public static void selectionSort(int[] array) {int n array.length;for (int i 0; i n - 1; i) {int minIndex i;for (int j i 1; j n; j) {if (array[j] array[minIndex]) {minIndex j;}}// 交换array[i]和array[minIndex]int temp array[i];array[i] array[minIndex];array[minIndex] temp;}}public static void main(String[] args) {int[] array {64, 25, 12, 22, 11};selectionSort(array);System.out.println(Sorted array: Arrays.toString(array));}
}插入排序Insertion Sort
插入排序是一种简单直观的排序算法它的工作原理是将一个元素插入到已排序好的数组中。插入排序从第一个元素开始认为第一个元素是已排序的然后将下一个元素插入到已排序的数组中直到所有元素都被插入到合适的位置。
public class InsertionSort {public static void insertionSort(int[] array) {int n array.length;for (int i 1; i n; i) {int key array[i];int j i - 1;// 将array[0..i-1]中大于key的元素往后移动while (j 0 array[j] key) {array[j 1] array[j];j j - 1;}// 将key插入到正确的位置array[j 1] key;}}public static void main(String[] args) {int[] array {12, 11, 13, 5, 6};insertionSort(array);System.out.println(Sorted array: Arrays.toString(array));}
}归并排序Merge Sort
归并排序是一种分治算法它将一个数组分成两个子数组分别对子数组进行排序然后合并这两个子数组以得到最终的有序数组。
import java.util.Arrays;public class MergeSort {public static void merge(int[] array, int left, int middle, int right) {int n1 middle - left 1;int n2 right - middle;// 创建临时数组int[] leftArray new int[n1];int[] rightArray new int[n2];// 将数据复制到临时数组 leftArray[] 和 rightArray[]for (int i 0; i n1; i)leftArray[i] array[left i];for (int j 0; j n2; j)rightArray[j] array[middle 1 j];// 归并临时数组到 array[left..right]int i 0, j 0;int k left;while (i n1 j n2) {if (leftArray[i] rightArray[j]) {array[k] leftArray[i];i;} else {array[k] rightArray[j];j;}k;}// 复制剩余的元素while (i n1) {array[k] leftArray[i];i;k;}while (j n2) {array[k] rightArray[j];j;k;}}public static void mergeSort(int[] array, int left, int right) {if (left right) {// 找出中间点int middle left (right - left) / 2;// 对左侧和右侧进行递归排序mergeSort(array, left, middle);mergeSort(array, middle 1, right);// 合并已排序的子数组merge(array, left, middle, right);}}public static void main(String[] args) {int[] array {12, 11, 13, 5, 6, 7};int n array.length;System.out.println(Original array: Arrays.toString(array));mergeSort(array, 0, n - 1);System.out.println(Sorted array: Arrays.toString(array));}
}
快速排序Quick Sort
快速排序是一种分治算法它选择一个元素作为基准将数组分成两个子数组小于基准的放在左边大于基准的放在右边然后递归地对子数组进行排序。
import java.util.Arrays;public class QuickSort {public static int partition(int[] array, int low, int high) {int pivot array[high];int i low - 1;for (int j low; j high; j) {if (array[j] pivot) {i;// 交换 array[i] 和 array[j]int temp array[i];array[i] array[j];array[j] temp;}}// 交换 array[i1] 和 array[high]int temp array[i 1];array[i 1] array[high];array[high] temp;return i 1;}public static void quickSort(int[] array, int low, int high) {if (low high) {// 获取分区点int partitionIndex partition(array, low, high);// 对左右子数组进行递归排序quickSort(array, low, partitionIndex - 1);quickSort(array, partitionIndex 1, high);}}public static void main(String[] args) {int[] array {12, 11, 13, 5, 6, 7};int n array.length;System.out.println(Original array: Arrays.toString(array));quickSort(array, 0, n - 1);System.out.println(Sorted array: Arrays.toString(array));}
}以上是几种常见的排序算法的Java实现。每种排序算法都有其特定的应用场景和性能特点。在实际应用中根据数据规模和特点选择合适的排序算法是很重要的。这些排序算法的实现可以作为学习算法和数据结构的起点理解它们的原理有助于提高编程技能和解决实际问题。