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

快速排序法

时间:2024-04-23 17:14:06浏览次数:18  
标签:sort nlogn int 复杂度 标杆 && 排序 快速

第一种写法:定标杆在起点
时间复杂度:平均o(nlogn),最坏o(n^2)
代码如下:

点击查看代码
#include <bits/stdc++.h>
using namespace std;
void quick_sort(int a[],int b,int e)
{
    if(b>=e) return;
    int temp = a[b];
    int i = b,j = e;
    while(i<j)
    {
        while(j>i&&a[j]>=temp) j--;//注意这里一定要找到严格小于的,否则会出错
        while(j>i&&a[i]<=temp) i++;//注意这里一定要找到严格大于的,否则会出错
        if(i<j) swap(a[i],a[j]);
    }
    a[b] = a[i];
    a[i] = temp;
    quick_sort(a,b,i-1);
    quick_sort(a,i+1,e);
}
int main()
{
    ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    int n;
    cin>>n;
    int a[n+1];
    for (int i = 1;i<=n;i++) cin>>a[i];
    quick_sort(a,1,n);
    for (int i = 1;i<=n;i++) cout<<a[i]<<" ";
    return 0;
}

第二种随机定标杆 平均时间复杂度:o(nlogn),最坏:o(n^2),但是概率比第一种定标杆的小得多,代码不会

标签:sort,nlogn,int,复杂度,标杆,&&,排序,快速
From: https://www.cnblogs.com/cuijunjie18/p/18153272

相关文章

  • 说说你对选择排序的理解?如何实现?应用场景?
    一、是什么选择排序(Selectionsort)是一种简单直观的排序算法,无论什么数据进去都是 O(n²)的时间复杂度,所以用到它的时候,数据规模越小越好其基本思想是:首先在未排序的数列中找到最小(or最大)元素,然后将其存放到数列的起始位置然后再从剩余未排序的元素中继续寻找最小(or最大)......
  • vis.js滚动和排序
    代码案例<!doctypehtml><html><head><title>Timeline</title><scripttype="text/javascript"src="https://unpkg.com/vis-timeline@latest/standalone/umd/vis-timeline-graph2d.min.js"></script>......
  • 使用ollama + AnythingLLM快速且简单的在本地部署llm3
    使用ollama+AnythingLLM快速且简单的在本地部署llm3不多说,直接开始一、安装ollamaollama官网:https://ollama.com/下载地址:https://ollama.com/download打开以后注册并下载即可安装没有什么好说的,找到自己的系统安装即可,因为我的电脑没有搞虚拟机,所以就直接安装Windows的......
  • 排序3-插入排序
    排序3-插入排序插入排序把排序对象分成已排序和未排序两个部分,每次选取未排序部分的首元素,将它插入已排序部分的合适部分插入排序(正序)//插入排序voidinsertSort(intarr[],intlength){intj;for(inti=1;i<length;i++){//i是无序部分首元素的下标......
  • 选择电脑_希望自己可以快速买电脑
    1、外包装没动2、封箱胶带没动3、查看SN码,在Windows系统中,可以通过命令提示符输入wmicbiosgetserialnumber来查询BIOS中的序列号。2、查看硬盘使用时间3、事件管理器,Windows日志,系统,筛选当前日志们6005,6006查看开机关机时间4、DirectX诊断工具:使用快捷键Windows+R......
  • 常见的排序算法——归并排序
    本文记述了自顶向下归并排序的基本思想和一份参考实现代码,并在说明了算法的性能后用随机数据进行了验证。◆思想使用自顶向下的分治思想进行排序。将待排序元素分为两个待排序子范围,用递归的方式对两个子范围分别排序。然后将排序结果归并起来,即得到整体排序的结果。归并两个已......
  • Windows快速安装Rust
    本文是最简最快最小化安装重点提示:如果不想安装VS消耗时间和6-8G的空间,可以按本文安装。如果系统中已经安装了VS,那么直接运行rustup-init安装Rust,并一路回车即可。前置条件:安装C++环境rust底层是依赖C环境的连接器,所以需要先安装C/C++编译环境,点击下载64位mingw-builds......
  • vue3 快速入门系列 —— 其他API
    其他API前面我们已经学习了vue3的一些基础知识,本篇将继续讲解一些常用的其他api,以及较完整的分析vue2和vue3的改变。浅层响应式数据shallowRefshallow中文:“浅层的”shallowRef:浅的ref()。先用ref写个例子:<!--ChildA.vue--><template><p>#组件A</p>......
  • SQL Server 中将字符串按数字排序
    方法一:使用CAST或CONVERT我们可以使用CAST或CONVERT函数将字符串转换为数字,然后按照数字进行排序。示例如下:SELECT*FROMYourTableORDERBYCAST(YourColumnASINT)方法二:使用TRY_CAST或TRY_CONVERT如果我们不确定字符串中的所有值都可以成功转换为数字,我们可......
  • LLM开源小工具(基于代码库快速学习/纯shell调用LLM灵活管理系统)
    随着AI的各种信息的发展,LLM各种模型不断涌现,作为一名IT人员不得不向前走,不断探索学习发现新知识。随着学习,也了解到一些对于模型的调用,从而解决一些问题,或者对已有工具或应用的重写。如下是两个小工具介绍:QA-Pilot 是一个基于github开放的代码库进行对话式学习使用的工具(目前......