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

快速排序

时间:2024-11-17 09:31:24浏览次数:1  
标签:sort int 基准 ++ while quick 排序 快速

#include <iostream>

using namespace std;
const int N = 1e6 + 10;
int a[N], n;

void quick_sort(int a[], int l, int r)
{
	if (l >= r) return;
	
	int x = a[l + r + 1 >> 1], i = l - 1, j = r + 1;//防止r,l都为0而出错:l + r + 1 >> 1
	while (i < j)
	{
		do i ++; while (a[i] < x); //左指针,直到遇到不小于基准的数停
		do j --; while (a[j] > x); //右指针,直到遇到不大于基准的数停
		if (i < j) swap(a[i], a[j]); //若两指针未相遇则交换位置直到相遇
		
	}
	quick_sort(a, l, i-1); //j左边均为小于基准的数,进行递归
	quick_sort(a, i, r); //j右边均为大于基准的数,进行递归
}

int main()
{
	scanf("%d", &n);
	
	for (int i = 0;i < n;i ++) scanf("%d", &a[i]);
	
	quick_sort(a, 0, n - 1);
	
	for (int i = 0;i < n;i ++) printf("%d ", a[i]);
	
	return 0;
}

标签:sort,int,基准,++,while,quick,排序,快速
From: https://www.cnblogs.com/acing/p/18550260

相关文章

  • 归并排序
    先递归为多个小部分再进行排序#include<iostream>usingnamespacestd;constintN=1e5+10;inta[N],tem[N];voidmerge_sort(inta[],intl,intr){ if(l>=r)return; intmid=l+r>>1; merge_sort(a,l,mid),merge_sort(a,mid+1,r);//......
  • 简单选择排序
     假设要排序的序列元素个数为n,简单选择排序的思路为:第一趟从第一个元素开始,在未排序的n个元素中选出最小元素,将其与序列第一个元素交换;第二趟从第二个元素开始,在未排序的n-1个元素中,选出最小元素,将其与本趟的第一个元素交换,以此类推,经过n-1趟,形成了从小到大的已排序序列。 ......
  • 轻松理解操作系统 - Linux文件系统模块完结!又可以快速了解原理了
    在前面的7期中,我们了解了Linux文件系统的模块和它们相互之间是如何配合并形成一个完整的、可以将所有的所有都抽象成文件的体系。这样的体系主要是为了帮助大家在使用或编程的时候更加的简化,从而更简单的使用以及提升效率。本篇文章则提升深入理解Linux文件系统的效率,......
  • python文件排序都有哪些方法
    在python环境中提供两种排序方案:用库函数sorted()对字符串排序,它的对象是字符;用函数sort()对数字排序,它的对象是数字,如果读取文件的话,需要进行处理(把文件后缀名‘屏蔽’)。(1)首先:我测试的文件夹是/img/,里面的文件都是图片,如下图所示:(2)测试库函数sorted(),直接贴出代码:impor......
  • c语言快速排序
    快速排序(Quicksort)是一种高效的排序算法,采用分治法(DivideandConquer)策略来把一个序列分为较小和较大的两个子序列,然后递归地排序两个子序列。快速排序的步骤:选择基准(Pivot):从数列中挑出一个元素,称为"基准"(pivot)。分区(Partitioning):重新排序数列,所有元素比基准值小的摆放......
  • 上海交大动手学大模型教程,助力快速入门LLM大模型(附课件)
    前有李沐大神的动手学深度学习,现有上海交大的动手学大模型教程,对大模型感兴趣的直接冲!就在4月份上交大发布了动手学大模型教程,这份教程来自上海交大《人工智能安全技术》课程讲义拓展,教师是是张倬胜教授。朋友们如果有需要全套《上海交大的动手学大模型教程》,扫......
  • GFPS技术原理(五)快速配对流程
    这里快速配对流程分为两种情况:初次做快速配对SeekerProvider①:打开配对模式②:监听provider广播③:writekey-basedpairingrequest......
  • 快速上手:Docker 安装详细教程(适用于 Windows、macOS、Linux)
    ###快速上手:Docker安装详细教程(适用于Windows、macOS、Linux)---Docker是一款开源容器化平台,广泛应用于开发、测试和部署。本文将为您提供分步骤的Docker安装教程,涵盖Windows、macOS和Linux系统。---##**一、Docker安装前的准备工作**在安装Docker之前,确保满......
  • 抖音巨量千川投流快速增至1k-100w粉丝的秘诀,抖音,快手,视频号等全平台涨粉黑科技
    在抖音这个短视频平台上,@理理......
  • 快速量产低功耗 4G 定位方案?Air201 模组来搞定!
    今天我们来了解的是Air201模组快速量产低功耗4G定位方案,希望大家有所收获。寻寻觅觅低功耗4G定位方案?一个Air201就够了!——定位准、体积小、功耗低,助力行业客户快速量产!01Air201是什么?16mm32mm4mm迷你尺寸,便于嵌入各类物联网设备:底板厚度:0.6mm;模块厚度:1.7mm;SIM......