Java中有许多种不同的算法>排序算法,下面是一些常见的算法>排序算法的实现示例:
- 冒泡排序(Bubble Sort)
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]) {// 交换arr[j]和arr[j+1]int temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;}}}
}
- 插入排序(Insertion Sort)
java">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;}
}
- 选择排序(Selection Sort)
java">public static void selectionSort(int[] arr) {int n = arr.length;for (int i = 0; i < n-1; i++) {int minIndex = i;for (int j = i+1; j < n; j++) {if (arr[j] < arr[minIndex]) {minIndex = j;}}// 交换arr[i]和arr[minIndex]int temp = arr[i];arr[i] = arr[minIndex];arr[minIndex] = temp;}
}
- 快速排序(Quick Sort)
java">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);}
}private 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++;// 交换arr[i]和arr[j]int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}}// 交换arr[i+1]和arr[high]int temp = arr[i+1];arr[i+1] = arr[high];arr[high] = temp;return i+1;
}
- 归并排序(Merge Sort)
java">public static void mergeSort(int[] arr, int low, int high) {if (low < high) {int mid = (low + high) / 2;mergeSort(arr, low, mid);mergeSort(arr, mid+1, high);merge(arr, low, mid, high);}
}private static void merge(int[] arr, int low, int mid, int high) {int[] temp = new int[arr.length];for (int i = low; i <= high; i++) {temp[i] = arr[i];}int i = low;int j = mid+1;int k = low;while (i <= mid && j <= high) {if (temp[i] <= temp[j]) {arr[k] = temp[i];i++;} else {arr[k] = temp[j];j++;}k++;}while (i <= mid) {arr[k] = temp[i];i++;k++;}
}
这里只给出了一种实现方式,实际上这些算法还有很多不同的变体和优化方法。