sorting - quick sort

SWUST OJ 之 0413 Quick Sort 题目 Quicksort is a well-known sorting algorithm developed by C. A. R. Hoare that, on average, makes Θ(n log n) comparisons to sort n items. However, in the worst case, it makes Θ(n2) comparisons. Typ... 阅读详情
#include "stdio.h"
#include "string.h"

#define MAX_LIST 50

typedef struct _SqList {
    int data[MAX_LIST];
    int length;
}SqList;

//The flesh of QSort lies in Partition, it chooses one element(pivot) from the array 
//moves elements around to render the array in a state that everything before the pivot
//is smaller than pivot whilst everything after pivot is larger. The sort can continue 
//on these two sub-arraies. The rationale behind this sorting algorithm is to bisect the 
//array and recursively sorting on sub-array. 
int Partition( SqList* L, int start, int end )
{
    int temp = L->data[start];

    while( start < end )
    {
        while(start < end &&  L->data[end] >= temp )
            end--;
        L->data[start] = L->data[end];
        while( start < end && L->data[start] <= temp )
            start++;
        L->data[end] = L->data[start];
    }
    L->data[start] = temp;
    return start;
}
void QSort( SqList* L, int start, int end )
{
    if( start < end )
    {
        int pivot = Partition(L, start, L->length-1 );
        QSort( L, start, pivot - 1 );
        QSort( L, pivot + 1, end );
    }
}
void QuickSort(SqList* L)
{
    QSort(L, 0, L->length-1);   
}

int main()
{
    SqList d;
    int intarr[] = {1,10,23,48,65,31,-21,9,88,100};
    memcpy( d.data, intarr, sizeof(intarr));
    d.length = sizeof(intarr)/sizeof(int);  
    int index = 0;
    printf("Original array:\n");
    for( ; index < d.length; index++ )
        printf(" %d", d.data[index] );
    printf("\nQuick sort...\n");
    QuickSort( &d );
    for( index = 0; index < d.length; index++ )
        printf(" %d", d.data[index] );
    printf("\n");
    return 0;
}
算法——Quick Sort 题目描述 Quicksort is a well-known sorting algorithm developed by C. A. R. Hoare that, on average, makes Θ(n log n) comparisons to sort n items. However, in the worst case, it makes Θ(n2) comparisons. Typ... 阅读详情

相关推荐

qSort帮您解决QT的QList排序问题

在Qt中,qSort函数被用于对各种容器进行排序,如QList、QVector等。其底层逻辑实际上是通过调用标准库中的qsort函数来实现的,而qsort函数是C标准库中的排序函数,使用的是经典的快速排序算法。

啊渊的专栏 5398

qsort函数、sort函数

qsort函数和sort函数都可以对连续内存的数据进行排序 1.qsort(即quicksort) 头文件:stdlib void qsort( void *base, size_t num, size_t width, int (__cdecl *compare ) int compare (const void *elem1, const void *elem2 ) );参数意义如下:第

IT_xiaolaoshu的博客 736

AI 生成 CAN 通信测试用例实战

本文分享了AI辅助汽车电子测试用例编写的实战经验。通过某车企CAN网络测试项目案例,对比传统方式(需27天)与AI辅助方式(仅5天)的效率差异,展示81%的效率提升。文章详细介绍了从DBC文件提取信号信息的方法,包括DBC文件结构解析、信号定义说明,并提供了完整的Python解析脚本代码,可将信号信息导出为JSON或Excel格式,为后续AI批量生成测试用例奠定基础。

小明的博客 691

QT快速排序法

在对大量数据进行排序时耗时比较大,采用快速排序法相对较快。下面代码是对ROW*COL个数据进行排序,fDtaBuffer是存储数据的buffer,排序后的数据也放入该buffer。该代码是在网上找来的,下面会把参考代码贴上,谢谢这位高手分享代码。 void MainWindow::goQuick() { quickSort(0,COL*ROW-1); //进行快排} ...

weixin_30861797的博客 2041

MQTT阿里云OTA 调试记录

2.验证,这个验证是什么意思呢,就是阿里云会把你包的信息,比如包大小,streamid(相当于包的识别码),版本号发送给你的设备,然后如果你没发送升级成功的包给阿里云,这里会是一直验证中的状态,那你的设备每次重新连接阿里云,发送connect包给阿里云的时候,阿里云就会发送一次这个验证(upgrade)包。提取到了之后就可以发送请求包了,这个请求包比较坑,也可能是我没付费,他的包一次最多只有1024个字节的数据。之前说了,验证状态下,设备发送connect包给阿里云,阿里云就会发一个upgrade包给你。

qq_42585211的博客 1231

Petalinux 2021.2 下 Qt组件编译报错?手把手教你修改bb文件搞定qt3d/qtquickcontrols2

本文详细解析了Petalinux 2021.2环境下Qt组件(如qt3d、qtquickcontrols2)编译报错的解决方案。通过修改bb文件或使用bbappend文件覆盖,有效解决`petalinux-build --sdk`命令执行时的源码获取失败或哈希校验不匹配问题,并提供验证与调试技巧,帮助开发者快速修复构建流程中断问题。

weixin_29188997的博客 215

Sorting 排序算法: Quick Sort 快速排序

Sorting 排序算法: Quick Sort 快速排序 文章目錄Sorting 排序算法: Quick Sort 快速排序简介参考正文算法思想原理输入算法思想算法流程算法复杂度分析Java 实现结语 简介 快速排序作为最常被应用的排序算法,因为其拥有最好的平均时间效率,同时只用了常数的额外空间,所以受到大多数应用的青睐。 参考 正文 算法思想原理 输入 /* 传入参数 */ int[] A // 原数组(可以是任何类型的数据,这边使用

超悠閒的博客 1150

银河麒麟V10 SP3离线安装Nginx1.21.5全记录(附11个rpm包下载清单)

本文详细记录了在银河麒麟V10 SP3操作系统上离线安装Nginx 1.21.5的全过程,包括11个必备rpm包的下载清单。通过分步骤的实战指南,帮助用户在国产化环境中高效部署Nginx服务,涵盖安装、配置、调优及故障排查等关键环节,特别适合金融、政务等对安全性要求高的场景。

weixin_30872337的博客 603

Sorting Algorithm-Quick Sort

Quick Sort-快速排序 快速排序(Quick Sort)的基本思想是:通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序的目的。 Ex: 以第一个元素5为key,第一轮循环,要把小于5的元素放左边,大于等于5的放右边 接着递归,5左边的2,1,4,3重复,5右边的7,8,6,9重

Dufre 989

android广告SDK原理详解(附源码)

广大的开发者吃糠咽菜开发了一两款APP,获取了一些流量后自然就会想到流量变现,一般情况下大家会选择到百度联盟或者Google Admob这些广告服务提供商注册开发者账号,在自己的APP里面加上几行广告位代码,集成他们的广告SDK包。然后谋事在人,成事在天,只有每天看报表查查收益。   也有一些开发者为了能够提高自己的变现水平,同时接入了好几家的sdk,哪家出的收益高一点我就出哪家的广告,但是这

rmcgogo的博客 1万+

别再盲调PID了!手把手教你用VOFA+实时可视化电机速度曲线(附STM32F4源码)

本文详细介绍了如何使用VOFA+工具实现PID参数的可视化调试,帮助开发者从盲调转向精准调优。通过实时可视化电机速度曲线,结合STM32F4源码示例,展示了如何高效调试Kp、Ki、Kd参数,解决响应慢、超调等常见问题,大幅提升电机控制系统的性能。

weixin_28366475的博客 128

Sorting (Merge Sort, Rainball Sort, quick select) 总结

Merge k Sorted Lists(这题是用PQ,或者merge sort都可以做,关于第K大的问题,参考: PriorityQueue 第K大问题总结) Sort an Array ( 重点掌握merge sort和quick sort,因为两者可以演变为很多其他的算法,divide conquer, quick select) Merge Intervals Sort Colors Sort List Convert Sorted Array to Binary Searc...

leetcode 解题思路 541

dolphinscheduler-3.4.0

dolphinscheduler集群部署

docsz的博客 660

c++ sort 类的一点区别

#include "stdafx.h" #include #include #include #include using namespace std; bool compare(const string &a, const string &b){ return a > b; } bool cmp(const int &a, const int &b){ return

wukai0909的博客 2125

后悔没早点知道!用AI只需四步,一次性讲清高质量论文引言写法(附公式+AI指令)

帮我写SCI 论文撰写引言的“研究背景与重要性”,要求从本研究所属领域的小背景切入,使用现在时态描述该领域的总体状况与发展趋势,突出其在学术研究、实际应用或社会层面的重要价值,并通过一个吸引人的钩子开头,如关键事实、现实问题或学术热点,引导读者关注本主题的重要性。梳理你所在领域和你研究相关的关键成果,但不能罗列所有文献,重点抓核心脉络,这部分最重要的实际上是让你了解别人的研究脉络,然后在每个关键的节点上,引用几篇关键参考文献作支撑,来体现你对领域的熟悉度就可以了。3)研究缺口模糊,没法突出问题的真实价值;

qq_64378896的博客 114

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

QuickSort C++

//// main.cpp// Algorithm_rehersal//// Created by FENGLINAN on 13-12-2.// Copyright (c) 2013年 FENGLINAN. All rights reserved.//#include #include #include #include #include #include #include #include

861

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Collection of algorithm for sorting. 常见排序算法集(三) —— Quick Sort

Quick Sort

Jason Leaster | Rebuilding the tower of babel 2638

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

STL sort源码剖析

STL的sort()算法,数据量大时采用Quick Sort,分段递归排序,一旦分段后的数据量小于某个门槛,为避免Quick Sort的递归调用带来过大的额外负荷,就改用Insertion Sort。如果递归层次过深,还会改用Heap Sort。本文先分别介绍这个三个Sort,再整合分析STL sort算法(以上三种算法的综合) -- Introspective Sorting(内省式排序)

Enjoy Coding 534

Hack 开源等宽字体演进史:从 CHANGELOG 解读 1.0.0 到 3.003 的版本变迁

Hack 是一款为源代码而生的开源等宽字体,其完整演进轨迹被系统记录在仓库根目录的 [CHANGELOG.md](https://link.gitcode.com/i/6576fbeb8f91120d17fc6c34fb2a1ce3) 中。本篇技术文章以这份变更日志为主线,逐版本拆解 Hack 从 1.0.0 分叉 Bitstream Vera Sans Mono,到 3.003 完成字形全面重构

gitblog_00314的博客 475

为什么Bubble Sort这么慢?用Visual Sorting可视化彻底搞懂O(n²)排序算法(新手友好)

**Visual Sorting**(又名 The Sound Of Sorting)是一款把**排序算法可视化**做到极致的开源工具:它用动态条形图实时演示冒泡排序、快速排序等 20 多种算法的每一步,还能为每根柱子配上音高,让你"听"懂 **O(n²)** 与 **O(n log n)** 的差距。这篇文章将以 **Bubble Sort(冒泡排序)** 为例,带你用最直观的方式搞懂"为什么冒

gitblog_01158的博客 1107

排序算法(7)--exchang Sorting--交换排序[2]--Quick Sort--快速排序

1.基本思想 从待排序列中选取一元素作为轴值(也叫主元)。 将序列中的剩余元素以该轴值为基准,分为左右两部分。左部分元素不大于轴值,右部分元素不小于轴值。轴值最终位于两部分的分割处。 对左右两部分重复进行这样的分割,直至无可分割。 从快速排序的算法思想可以看出,这是一递归的过程。 2.实现原理   对于n个数据的记录。   从数据中取出第一个元素作为分界值、放在中间,所有比分界值小的...

weixin_30781631的博客 101

Quick Sort

Quick sort is empirically fastest among all the O(nlogn) sorting algorithms. Time Complexity: Best, Average, T(n) = 2T(n/2) + O(n) => O(nlogn) Worst case (e.g. a sorted array) T(n) = T(n-1) +...

weixin_30832405的博客 100

Quick Sort  快速排序

Quicksort is a well-known sorting algorithm developed by C. A. R. Hoare that, on average, makes Θ(n log n) comparisons to sort n items. However, in the worst case, it makes Θ(n2) comparisons. Typic...

孤月水明 408

Internal Sorting: Quicksort-1:Sorting by Exchanging

Quicksort-1:快速排序-1Animation nimated visualization of the quicksort algorithm. The horizontal lines are pivot values. Full example of quicksort on a random set of numbers. The shaded element is the pi

d3y1`5 81_09 623

[Algorithms] Sorting Algorithms (Insertion Sort, Bubble Sort, Merge Sort and Quicksort)

Recently I systematicall review some sorting algorithms, including insertion sort, bubble sort, merge sort and quick sort. I then implement them in C++. All the function takes in avector<int>&...

weixin_34261415的博客 161

数据结构13 Quick Sort&Bucket Sort

Quick Sort 3-mid算法: Qsort 输入left,right 1.对三个元素:a[left],a[right],a[(left+right)/2]进行排序,如果中间值为a[k],则pivot = a[k] 2.Swap(&a[k],&a[right-1]) 3.i从left开始寻找大于pivot的元素,j从right-1寻找小于pivot的元素 4.若i<j,S(&a[i],&a[j]),否则退出 5.Swap(&a[i],&a

HGGshiwo的博客 8023
上一篇: sorting - shell sort
下一篇: sorting - merge sort
小马识图
博客等级 码龄18年 8粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值