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

快速排序QuickSort

时间:2024-08-21 15:58:45浏览次数:13  
标签:include int QuickSort high while low pivot 排序 快速

#include<stdio.h>
#include<stdbool.h>
#include<stdlib.h>

/*时间复杂度是O(n*递归层数) O(n*logn)
空间复杂度是O(递归层数)*/


int  Partition(int a[],int low,int high) {
	int pivot = a[low];//第一个元素作为枢轴
	while (low < high) {//low 和 high作为数轴最终位置
		while (low<high && a[high]>=pivot) { //high指向位置数据大于pivot就直接移动 因为我们是升序,大数据在右侧
			high--;
		}
		a[low] = a[high];//找到high指向位置数据小于pivot枢轴位置 将数值给到low指向
		while (low<high && a[low]<pivot) {//low指向位置数据小于pivot直接移动,小数据在左侧
			low++;
		}
		a[high] = a[low];//比枢轴大赋值给high空位置
	}
	a[low] = pivot;//将枢轴放到“中间”位置
	return low;//返回low指向位置 最终low和high指向同一位置所以二者都可以 所以在后面递归的时候  要进行加1剪1  获得下一递归的low / high
}
void QuickSort(int a[],int low,int high) {
	if (low < high) {
		int pivotops = Partition(a, low, high);
		QuickSort(a,low,pivotops-1);
		QuickSort(a,pivotops+1,high);
	}
}

int main() {
	int d[] = { 49,38,65,97,76,13,27,49 };
	int n = 8;
	QuickSort(d,0,n-1);
	for (int i = 0; i < n; i++) {
		printf("%d  ", d[i]);
	}
	return 0;
}

标签:include,int,QuickSort,high,while,low,pivot,排序,快速
From: https://blog.csdn.net/weixin_62858623/article/details/141360889

相关文章

  • 堆排序的插入和删除
    插入:    1. 检查你的顺序表是否还有位置去插入,如果没有需要扩展    2.插入到已有序列的后一位置    3.和其父节点进行比较,是否满足大根堆/小根堆规则    4.不满足则需要交换数值删除:    1.将最后一个元素覆盖将要删除的元......
  • Docker快速入门 01 安装、部署环境
    1.简介和安装1.1简介Docker是一个应用打包、分发、部署的工具。打包:需要的环境变成一个“安装包”。分发:将“安装包”上传到云端,供他人获取。部署:将“安装包”下载下来后直接快速搭建运行环境。通俗讲就是轻量级的虚拟机,只虚拟需要的运行环境。1.2安装这里以Docker......
  • Docker快速入门 02 构建镜像
    本文以PythonWeb(Flask)小项目构建Docker镜像1.准备项目确保PythonWeb项目已准备好项目目录结构my-python-app/│├──app.py├──requirements.txt└──Dockerfileapp.py:Flask应用的主文件。fromflaskimportFlaskapp=Flask(__name__)@app.ro......
  • Chainlit接入FastGpt接口快速实现自定义用户聊天界面
    前言由于fastgpt只提供了一个分享用的网页应用,网页访问地址没法自定义,虽然可以接入NextWeb/ChatGPTweb等开源应用。但是如果我们想直接给客户应用,还需要客户去设置配置,里面还有很多我们不想展示给客户的东西怎么办?于是,我使用Chainlit实现了一个无缝快速接入fastgpt实现自......
  • 电力系统潮流计算(牛顿-拉夫逊法、高斯-赛德尔法、快速解耦法)【6节点 9节点 14节点 26
      ......
  • 桶排序算法及优化(java)
    目录1.1引言1.2桶排序的历史1.3桶排序的基本原理1.3.1工作流程1.3.2关键步骤1.4桶排序的Java实现1.4.1简单实现1.4.2优化实现1.4.3代码解释1.5桶排序的时间复杂度1.5.1分析1.5.2证明1.6桶排序的稳定性1.7著名案例1.7.1应用场景1.7.2具体案例1......
  • AvaloniaChat-v0.0.2:兼容智谱AI 快速使用指南
    智谱AI介绍北京智谱华章科技有限公司(简称“智谱AI”)致力于打造新一代认知智能大模型,专注于做大模型的中国创新。公司合作研发了中英双语千亿级超大规模预训练模型GLM-130B,并基于此推出对话模型ChatGLM,开源单卡版模型ChatGLM-6B。同时,团队还打造了AIGC模型及产品矩阵,包括AI提效助......
  • 排序算法 常见排序算法特性比较
    目录排序的概念内外部排序稳定与非稳定排序改进排序的指标图片排序的概念排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原......
  • JetBrains Rider 2024.2 (macOS, Linux, Windows) - 快速且强大的跨平台 .NET IDE
    JetBrainsRider2024.2(macOS,Linux,Windows)-快速且强大的跨平台.NETIDEJetBrains跨平台开发者工具请访问原文链接:https://sysin.org/blog/jetbrains-rider/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgJetBrainsRider-快速且强大的跨平台.NETIDE......
  • 《刺客信条:英灵殿》丢失d3d12.dll:如何快速定位并解决《刺客信条:英灵殿》中的DLL加载问
    《刺客信条:英灵殿》(Assassin'sCreedValhalla)是一款备受欢迎的动作角色扮演游戏,但在启动或运行过程中,一些玩家可能会遇到“d3d12.dll文件丢失”的错误提示。这个问题通常意味着游戏无法找到所需的动态链接库(DynamicLinkLibrary,DLL)文件,从而阻止了游戏的正常启动或运行。本......