使用冒泡排序实现数组的降序排序(从大到小),用java实现
时间: 2024-11-09 16:26:23 浏览: 51
冒泡排序是一种简单的排序算法,它重复地遍历要排序的数组,比较相邻的两个元素,如果它们的顺序错误就交换它们的位置。冒泡排序的时间复杂度为O(n^2)。要实现数组的降序排序,只需要在比较相邻元素时,将大的元素往前移动,这样就可以实现从大到小的排序。
以下是使用Java实现冒泡排序的代码:
```
public static void bubbleSortDesc(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;
}
}
}
}
```
其中,arr为要排序的数组,n为数组的长度。在双重循环中,i表示当前已经排好序的元素个数,j表示当前比较的元素下标。如果arr[j]比arr[j+1]小,则交换它们的位置,这样就可以实现从大到小的排序。
相关问题
Java 数组降序排列
在Java中,对数组进行降序排列通常可以使用选择排序、冒泡排序、插入排序或更高效的算法如快速排序、归并排序等。这里以快速排序为例,因为它的平均性能较好:
```java
public class QuickSortDesc {
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]; // 最大值作为基准
int i = low - 1; // 指针i指向小于基准的元素
for (int j = low; j < high; j++) {
if (arr[j] >= pivot) { // 如果当前元素大于等于基准
i++; // 移动指针i
swap(arr, i, j); // 交换位置
}
}
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;
}
// 示例
public static void main(String[] args) {
int[] arr = {5, 3, 8, 6, 2, 9};
quickSort(arr, 0, arr.length - 1);
System.out.println("Sorted array in descending order: " + Arrays.toString(arr));
}
}
```
java冒泡排序反转数组
在 Java 中,你可以通过冒泡排序算法结合数组反转操作来对数组进行逆序排列。冒泡排序是一种简单的排序算法,它反复遍历数组,每次比较相邻的元素并交换位置,直到整个序列有序。而数组反转则是将数组的所有元素从头到尾依次取反。
下面是一个简单的例子,演示如何先使用冒泡排序对数组进行升序排序,然后将其反转得到降序排列:
```java
public class Main {
public static void main(String[] args) {
int[] array = {64, 34, 25, 12, 22, 11, 90};
// 使用冒泡排序对数组进行升序排序
bubbleSort(array);
// 反转数组
reverseArray(array);
// 打印逆序后的数组
for (int i : array) {
System.out.print(i + " ");
}
}
// 冒泡排序函数
public static void bubbleSort(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
// 交换元素
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
// 数组反转函数
public static void reverseArray(int[] arr) {
int start = 0;
int end = arr.length - 1;
while (start < end) {
// 交换两端的元素
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
start++;
end--;
}
}
}
```
运行这个程序,你会看到原数组 `64 34 25 12 22 11 90` 被逆序成了 `90 22 12 25 34 64 11`。
阅读全文