排序算法(Sorting)——快速排序

每次排序的时候设置一个基准点,将小于等于基准点的数全部放到基准点的左边,将大于等于基准点的数全部放到基准点的右边。其实快速排序是基于一种叫做“二分”的思想。#include<iostream>using namespace std;int const M=1001;int a[M];int N;void Quicksort(int left,int right){...
摘要由CSDN通过智能技术生成

每次排序的时候设置一个基准点,将小于等于基准点的数全部放到基准点的左边,将大于等于基准点的数全部放到基准点的右边。
其实快速排序是基于一种叫做“二分”的思想。

#include<iostream>
using namespace std;

int const M=1001;
int a[M];
int N;

void Quicksort(int left,int right)
{
   
	int i,j,t,temp;
	if
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Java 的快速排序算法代码如下: public static void quickSort(int[] arr, int left, int right) { if (left < right) { int partitionIndex = partition(arr, left, right); // 递归排序左子数组 quickSort(arr, left, partitionIndex - 1); // 递归排序右子数组 quickSort(arr, partitionIndex + 1, right); } } private static int partition(int[] arr, int left, int right) { // 设定基准值(pivot) int pivot = arr[right]; int i = left; for (int j = left; j < right; j++) { if (arr[j] < pivot) { swap(arr, i, j); i++; } } swap(arr, i, right); return i; } private static void swap(int[] arr, int i, int j) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } ### 回答2: 快速排序(Quick Sort)是一种高效的排序算法,它是基于“分治法(Divide and Conquer)”思想的。 下面是一个使用Java语言实现的快速排序算法的代码示例: ```java public class QuickSort { public static void quickSort(int[] arr, int low, int high) { if (low < high) { // 将数组划分为两个子数组,并获取中间位置 int partitionIndex = partition(arr, low, high); // 对左右子数组分别进行快速排序 quickSort(arr, low, partitionIndex - 1); quickSort(arr, partitionIndex + 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++; 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, 2, 9, 1, 8, 6, 3, 7, 4}; System.out.println("Before sorting: " + Arrays.toString(arr)); quickSort(arr, 0, arr.length - 1); System.out.println("After sorting: " + Arrays.toString(arr)); } } ``` 该代码使用递归实现了快速排序算法。在递归的过程中,首先选取一个基准值(通常选择数组的最右边元素)作为比较标准,然后将数组划分为两个子数组,一个子数组是所有小于基准值的元素,另一个子数组是所有大于基准值的元素。然后再对这两个子数组递归地进行快速排序,直到最后整个数组有序。 在同一次循环中,通过比较数组元素与基准值的大小,将小于基准值的元素交换到基准值的左边,大于基准值的元素交换到基准值的右边。最后,将基准值放到正确的位置,即基准值左边的元素都小于它,右边的元素都大于它。 以上就是一个简单的Java实现的快速排序算法的代码示例。 ### 回答3: 快速排序是一种常见的排序算法,它基于分治的思想。首先,在待排序数组中选择一个基准元素,然后将数组分成两部分,使左边的元素都小于基准元素,右边的元素都大于基准元素。接下来,对左右两部分分别执行快速排序,最后将左、基准、右三部分合并起来,得到排好序的数组。 下面是一个简单的Java实现快速排序的代码: ```java public class QuickSort { 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[low]; // 将基准元素设为第一个元素 while (low < high) { while (low < high && arr[high] >= pivot) { high--; } arr[low] = arr[high]; // 将小于等于基准元素的移到左边 while (low < high && arr[low] <= pivot) { low++; } arr[high] = arr[low]; // 将大于等于基准元素的移到右边 } arr[low] = pivot; // 将基准元素放到正确位置 return low; // 返回基准元素的下标 } } ``` 使用上述代码可以对一个整数数组进行快速排序。可以调用`quickSort`方法,传入待排序数组的起始和结束索引。代码首先判断是否需要继续排序,然后选择一个基准元素并进行划分,接着递归排序左子数组和右子数组,最后将左、基准、右三部分合并起来得到排好序的数组。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值