首页 > 其他分享 >快速排序

快速排序

时间:2023-03-02 23:56:40浏览次数:31  
标签:arr 下标 int pivotIndex param 数组 排序 快速

image-20230302215746755

	/**
	 * @param arr 需要排序的数组
	 * @param l   数组最左下标
	 * @param r   数组最右下标
	 */
	public static void quickSort(int[] arr, int l, int r) {
		if (l >= r) {// 相等的时候即为只剩一个元素,一个元素是有序的
			return;
		}
		int pivotIndex = partition(arr, l, r);// 实现了对子数组的原址重排,并且返回对应的主元下标
		quickSort(arr, pivotIndex + 1, r);
		quickSort(arr, l, pivotIndex - 1);
	}

	/**
	 * @param arr 原排序数组
	 * @param l   子数组数组最左下标
	 * @param r   子数组数组最右下标
	 * @return 主元下标 pivotIndex
	 */
	private static int partition(int[] arr, int l, int r) {
		int pivot = arr[r];
		int t;// 用作交换的变量
		int i = l - 1;// 指针i
		int j = l;// 指针j
		for (; j < r; j++) {// j负责遍历数组
			if (arr[j] < pivot) {
				i++;
				if (i != j) {// 优化,体现稳定性,可有可无
					t = arr[i];
					arr[i] = arr[j];
					arr[j] = t;
				}
			}
		}
		i++;
		if (i < r) {// 交换主元位置
			t = arr[i];
			arr[i] = arr[j];
			arr[j] = t;
		}
		return i;
	}

标签:arr,下标,int,pivotIndex,param,数组,排序,快速
From: https://www.cnblogs.com/ChuenSan/p/17174080.html

相关文章

  • 冒泡排序及其优化
    importjava.util.Arrays;publicclassbobbleSort{publicstaticvoidmain(String[]args){int[]arr={2,6,3,7,4,1,8,5,0,9};//......
  • LabVIEW|冒泡排序的实现
    冒泡排序简述:描述来自于大的泡泡总是先浮到水面。考虑一下,我们平时怎么给东西排序,比如有一堆苹果,需要我们按照个头从大到小排序。冒泡排序就是:先比较最右面两个苹果,如果左边......
  • 使用qsort函数实现冒泡排序(函数指针的运用)
    //此程序的本质:完全理解qsort函数的传参的原则////实现思路:因为我们是模拟qsort函数//所以我们要自己创造一个:比较数据的函数:cmp_int//因此必须有一个函数指针来接收这......
  • mysql数据库字符集和排序规则
    一般而言,我们可能选择utf8mb4这个字符集,而不选择utf8.这个是因为MySQL的utf8并不是真正的UTF8字符集,MySQL的utf8字符编码只有三个字节,节省空间但不能表达全部的UTF-8,只能......
  • 82. 删除排序链表中的重复元素 II
    存在一个按升序排列的链表,给你这个链表的头节点head,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中 没有重复出现 的数字。返回同样按升序排列的结果......
  • LESS 快速使用入门指南简介
    LessCSS是一个使用广泛的CSS预处理器,通过简单的语法和变量对CSS进行扩展,可减少很多CSS的代码量。LESS将CSS赋予了动态语言的特性,如变量、继承、运算、函数......
  • c语言学习记录 冒泡排序
    #include<stdio.h>#include<string.h>#define_CRT_SECURE_NO_WARNINGS1voidbubble_sort(intarr[],intsz){ inti=0; //排序次数 for(i=0;i<sz-1;i+......
  • 浙江理工大学每日一题——快速幂,线性同余方程,BSGS
    题目描述原题来自:SDOI2011你被要求设计一个计算器完成以下三项任务:给定y,z,py,z,p,计算y^x\bmodpyzmodp的值;给定y,z,py,z,p,计算满足x\timesy\equivz\(\bmod......
  • (优化/未优化)冒泡排序
    #include<stdio.h>//还可以优化voidbubble_sort(intarr[],intsize){for(inti=0;i<size-1;i++){//共有size-1趟冒泡排序for(intj=0;j<size-1-i;......
  • 手把手教你使用LabVIEW人工智能视觉工具包快速实现图像读取与采集
    (文章目录)前言今天我们一起来使用LabVIEWAI视觉工具包快速实现图像的读取与颜色空间转换、从摄像头采集图像。工具包的安装与下载方法可见之前的两篇博客。一、工具包......