【排序】谁减谁?返回1还是-1?

一句话概括

原来的顺序(a,b)

  • 升序
    就想要(a,b),不想调整顺序,就是false,就是「-1」
    a在前b在后,a<b则a-b是「负的」

  • 降序
    就想要(b,a),就想调整顺序,就是true,就是「1」
    b在前a在后,b>a则b-a是「正的」

参考链接

https:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 我不是很懂Java,但根据我的了解,快速排序的实现可以通过以下方式实现:1. 选择一个基准; 2. 将序列分为大于和小于基准的两个子序列; 3. 递归地对子序列进行快速排序; 4. 将子序列拼接起来以得到最终结果。 ### 回答2: 快速排序是一种常用的排序算法,可以通过递归的方式实现。它的基本思想是选择一个基准元素,然后将数组分为左右两部分,使得左边的元素都小于基准元素,右边的元素都大于基准元素,再递归地对左右两部分进行快速排序。 具体的实现步骤如下: 1. 定义一个快速排序的方法,传入待排序数组和起始位置和终止位置。 2. 在方法中,首先判断起始位置是否小于终止位置,若不满足则返回。 3. 选择一个基准元素,通常选择数组的第一个元素,可以将其保存在一个变量pivot中。 4. 定义两个指针,一个指向起始位置,一个指向终止位置。分别保存在变量i和j中。 5. 使用while循环,当i小于j时,执行以下步骤: - 从右向左遍历数组,找到第一个小于等于基准元素的元素,将其与arr[i]交换,并将i加1。 - 从左向右遍历数组,找到第一个大于基准元素的元素,将其与arr[j]交换,并将j1。 6. 当循环结束时,i和j会相遇在某个位置,将基准元素与arr[i](或arr[j])交换。 7. 接着,递归地对基准元素左边的子数组和右边的子数组进行快速排序,即调用快速排序方法。 下面是Java代码的实现示例: ```java public class QuickSort { public static void quickSort(int[] arr, int start, int end) { if (start >= end) { return; } int pivot = arr[start]; // 选择基准元素 int i = start, j = end; while (i < j) { while (i < j && arr[j] > pivot) { j--; } while (i < j && arr[i] <= pivot) { i++; } if (i < j) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } arr[start] = arr[i]; arr[i] = pivot; quickSort(arr, start, i - 1); // 递归排序左边的子数组 quickSort(arr, i + 1, end); // 递归排序右边的子数组 } } ``` 以上就是用Java实现快速排序算法的方法,可以通过调用quickSort()方法对数组进行排序。 ### 回答3: 快速排序是一种常用的排序算法,其思想是通过将数组分成较小和较大的两个子数组,然后递归地排序这两个子数组。 具体来说,快速排序的实现步骤如下: 1. 首先,选择一个基准元素。可以选择数组的第一个元素作为基准。 2. 创建两个指针,一个指向数组的第一个元素,称为左指针;另一个指向数组的最后一个元素,称为右指针。 3. 使用左指针和右指针进行元素互换,直到左指针的大于或等于基准元素的,右指针的小于或等于基准元素的。 4. 当左指针大于或等于右指针时,停止互换。此时,右指针的位置即为基准元素的最终位置。 5. 递归地对左子数组(左指针之前的元素)和右子数组(右指针之后的元素)进行排序,直到排序完成。 6. 最后,将左子数组、基准元素和右子数组合并起来,即为排序完成的数组。 下面是快速排序的Java代码示例: ```java public class QuickSort { public static void main(String[] args) { int[] array = {7, 2, 1, 6, 8, 5, 3, 4}; quickSort(array, 0, array.length - 1); for (int num : array) { System.out.print(num + " "); } } public static void quickSort(int[] array, int left, int right) { if (left < right) { int pivotIndex = partition(array, left, right); quickSort(array, left, pivotIndex - 1); quickSort(array, pivotIndex + 1, right); } } public static int partition(int[] array, int left, int right) { int pivot = array[left]; while (left < right) { while (left < right && array[right] >= pivot) { right--; } array[left] = array[right]; while (left < right && array[left] <= pivot) { left++; } array[right] = array[left]; } array[left] = pivot; return left; } } ``` 以上代码递归地调用quickSort方法进行排序,partition方法用于确定基准元素的最终位置。 希望以上回答能够帮助您理解快速排序的实现过程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值