SDUT 3491 数据结构实验之排序八:快速排序

数据结构实验之排序八:快速排序 Problem Description 给定N(N≤10^5)个整数,要求用快速排序对数据进行升序排列,注意不得使用STL。   Input  连续输入多组数据,每组输入数据第一行给出正整数N(≤10^5),随后给出N个整数,数字间以空格分隔。 Output  输出排序后的结果,数字间以一个空格间隔,行末不得有多余空格。 Example Input 阅读详情

1.题目

数据结构实验之排序八:快速排序
Time Limit: 1000 ms Memory Limit: 65536 KiB
Problem Description
给定N(N≤10^5)个整数,要求用快速排序对数据进行升序排列,注意不得使用STL。

Input
连续输入多组数据,每组输入数据第一行给出正整数N(≤10^5),随后给出N个整数,数字间以空格分隔。
Output
输出排序后的结果,数字间以一个空格间隔,行末不得有多余空格。
Sample Input

8
49 38 65 97 76 13 27 49

Sample Output

13 27 38 49 49 65 76 97

2.正确代码

#include <iostream>
using namespace std;
int a[100001];
void swap(int a[],int i,int j)
{
    int t;

    t=a[i];
    a[i]=a[j];
    a[j]=t;
}


void sort(int a[],int left,int right)
{
    if(left>=right)
        return;




    int i=left,j=right,temp=a[left],t;

    while(i<j)
    {
        while(a[j]>=temp && i<j)
            j--;

        while(a[i]<=temp && i<j)
            i++;

        if(i<j)
            swap(a,i,j); 
    }

    a[left]=a[i];
    a[i]=temp;

    sort(a,left,i-1);
    sort(a,i+1,right);
}

int main()
{
    int n,i;


    while( cin >> n)
    {
        for(i=1;i<=n;i++)
            cin >> a[i];

        sort(a,1,n);

        for(i=1;i<=n;i++)
            if(i==n)
                cout << a[i] <<endl;
            else
                cout << a[i] << ' ';

    }


    return 0;
}

3.解题思路

这个代码已经写过无数次了,可以说很简单了,这里只是点明一下思路。
1.while(i<j)
注意,这个不能相等,因为相等表示判断完了来进行退出,这个思路应该考虑清楚。
2.while(a[j]>=temp && i<j)
按照先右后左的顺序来进行判断,这个是你应该要明确的,下面解释原因:
因为你是最后的终点再和最左边的temp值进行交换,所以,你最后停止的地方然后交换的地方必须是符合最左边的,所以,你是让右边停止,因为如果右边停止,那么该数一定符合要求,即使左边没有符合要求的,那么遇到右边也得停止,这样才能完成交换
理解这个概念就很好理解了,就是这个样子。
3.没什么好解释的了其余,代码多敲几遍就比较熟了。

哈工大数据结构实验5_冒泡排序与快速排序 实验项目:排序方法的实验比较 排序方法是数据处理的最基本和最重要的操作。其目的是将一组“无序”的 记录序列调整为“有序”的记录序列。 实验题目:排序方法的实现与实验比较 实验内容: 实现一组经典的排序算法,通过实验数据的设计,考察不同规模和分布(正 序序列、反序序列和随机序列)的数据对排序算法运行时间影响的规律,验证理 论分析结果的正确性。 实验要求: 1. 实现以下三组排序方法中的一组排序算法: (1) 冒泡排序和快速排序; (2) 插入排序和希尔排序; (3) 选择排序和堆排序; (4) 递归和非递归的归并排序。 2. 产生不同规模和分布的数据,以 Excel 生成算法执行时间 T(n)关于输入规模 n 的曲线的形式,给出输入规模和分布对排序方法运行时间变化趋势的影响, 并与理论分析结果比较。 3. 将上述 Excel 表贴在实验报告中,与作适当分析或说明。原始 Excel 表与实 验一并提交。 立即下载

相关推荐

数据结构实验4快速排序

1 在掌握各种排序方法的排序过程的基础上,完成快速排序算法程序设计。 2 能够对排序算法进行基本的复杂度分析。

【数据结构】快速排序详解

超级详细的快速排序,看完即可手撕快排!

weixin_69519040的博客 7887

ST7789P3初始化配置

【代码】ST7789P3初始化配置。

zqq_1314的博客 4153

数据结构实验八:排序的应用

其基本思想是选择一个基准元素,将数组划分为左右两个子数组,使得左边的元素都小于等于基准,右边的元素都大于等于基准,然后对左右子数组递归地应用快速排序。将数组中小于等于基准的元素放在基准的左侧,将大于等于基准的元素放在基准的右侧。使用直接插入排序算法对序列{49,38,65,97,76,13,27,49}进行从小到大排序,并且输出每一趟排序的结果。使用快速排序算法对序列{49,38,65,97,49,13,27,76}进行从小到大排序,并且输出每一趟排序的结果。通常选择数组中的最后一个元素。

weixin_58628068的博客 1137

从OVITO可视化到LAMMPS计算:ATOMSK堆垛层错模型的全流程避坑指南

本文提供了一份从ATOMSK建模、OVITO可视化诊断到LAMMPS计算的堆垛层错模型全流程实战指南。重点解析了构建“计算友好”模型的核心矛盾,并详细演示了如何通过添加真空层、原子包裹和能量最小化等关键步骤,规避周期性边界条件带来的非物理相互作用,确保广义层错能计算的可靠性与可复现性。

v4w5x6的博客 266

帆软报表JS导出避坑指南:如何正确处理sessionid和参数传递

本文深入探讨了帆软报表中通过JavaScript实现一键导出的关键技术,重点解析了如何正确获取并传递sessionid以确保会话不丢失,以及如何构造包含必要参数的导出URL。文章详细对比了预览后导出与直接URL导出两种方式的差异,并提供了从参数拼接、前端触发下载到高级场景(如SPA集成)的完整避坑指南,帮助开发者构建稳定可靠的自定义导出功能。

weixin_42522857的博客 162

数据结构实验10----排序

对快速排序、大根堆排序,两种排序方法进行比较,写出大根堆排序算法。并对它们最坏、最好,平均情况进行比较分析。并列举一个实例,上机验证说明。

qq_60737285的博客 1003

从询价到回款:一篇讲透 SAP SD 销售与分销的实战入门指南

摘要: SAP SD(Sales and Distribution)模块是SAP ERP中管理销售与分销的核心组件,贯穿从订单到回款(Order-to-Cash)的全流程。其核心价值在于将销售业务结构化,通过主数据(客户、物料、定价)和交易单据(订单、交货、发票)实现流程可审计、可自动化。SD模块与物流(MM)、生产(PP)、财务(FI)深度集成,涵盖定价策略、信用控制、发运管理、国际贸易等复杂场景。关键设计包括条件技术(Condition Technique)实现灵活定价,单据流(Document Flo

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 258

数据结构与算法——实验4:快速排序

用快速排序法实现对无序序列的排序

阮阮的阮阮的博客 1303

「深度学习之优化算法」笔记(二)优化算法的分类

但是由于生物的局限性,人们所创造出的算法也会有局限性:我们所熟知的生物都生存在三维空间,在这些环境中,影响生物生存的条件比较有限,反应到算法中就是这些算法在解决较低维度的问题时效果很好,当遇到超高维(维度>500)问题时,结果可能不容乐观,没做过实验,我也不敢乱说。当然,他们的目的不是在最佳狩猎位置集合,他们的目的是在过去的途中看是否能发现更加好的狩猎位置,去往已经到过的狩猎地点再次狩猎是没有意义的,因为每个位置获取食物的难易程度是固定的。如果他们的策略是“不跟随最优解”,那么他们的策略是什么呢?

quanzhan_King的博客 1371

无源元器件-电容选型参数总结

电容选型时,需要考虑的参数多种多样,这些参数的选择会直接影响到电路的性能、稳定性、成本等多个方面。本文对电阻电容磁珠电感的参数进行详细介绍并总结。

fydar的博客 835

SDUT3491 数据结构实验之排序八:快速排序

代码: #include<stdio.h> int partition(int a[],int low,int high) { int x=a[low]; while(low<high) { while(low<high&&a[high]>=x) high--; a[low]=a[high]; w...

weixin_43849113的博客 321

软硬件融合加速技术系列文章

目录 文章目录目录计算机组成原理Linux 操作系统原理处理器进程管理内存管理I/O 系统文件系统网络协议栈资源管理设备管理GPUFPGASmartNIC/DPU 计算机组成原理 《计算机组成原理 — 冯诺依曼体系结构》 《计算机组成原理 — 基本硬件设备》 《计算机组成原理 — CPU 中央处理器》 《计算机组成原理 — 指令系统》 《计算机组成原理 — 总线系统》 《计算机组成原理 — 存储系统》 《计算机组成原理 — 输入输出系统 — 存储控制器接口类型》 《计算机组成原理 — 服务器》 《计算机组成

烟云的计算 6806

递归算法讲解(算法+例题)

递归什么是递归?递归的优缺点什么样的问题可以用递归解决呢? 视频演示 什么是递归? 递归是一种非常高效、简洁的编码技巧,一种应用非常广泛的算法,比如DFS深度优先搜索、前中后序二叉树遍历等都是使用递归。 方法或函数调用自身的方式称为递归调用,调用称为递,返回称为归。 基本上,所有的递归问题都可以用递推公式来表示。 递归的优缺点 优点:代码的表达力很强,写起来简洁。 缺点:空间复杂度高、有堆栈溢出风险、存在重复计算、过多的函数调用会耗时较多等问题。 什么样的问题可以用递归解决呢? 一个问题只要同时满足

qq_45830025的博客 2184

【数据集】CMIP6气候模式数据下载

简介CMIP6及其气候模式数据下载

WW、forever的博客 9356

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

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

SDUT 数据结构实验之排序八:快速排序

Problem Description nbvg 给定N(N≤10^5)个整数,要求用快速排序对数据进行升序排列,注意不得使用STL。 Input 连续输入多组数据,每组输入数据第一行给出正整数N(≤10^5),随后给出N个整数,数字间以空格分隔。 Output 输出排序后的结果,数字间以一个空格间隔,行末不得有多余空格。 Example Input 8 49 38 65 97 76 13 27 ...

weixin_34358365的博客 422

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【数据结构】快速排序(三种实现方式)

三种实现快排的方式

2301_79633555的博客 4040

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【数据结构】八大排序之快速排序算法

数据结构快速排序详解.内容包括:快排的简介及思想,快排代码实现的三种方式,快排的时间复杂度分析,快排的优化,快排的非递归实现,快排的三路划分算法.

C/C++领域,数据结构,linux,MySQl学习者 8538

数据结构之八大排序——快速排序

在待排序表L[1...n]中任取一个元素pivot作为枢轴(通常情况下取第一个元素为枢轴),通过一趟排序将待排序表划分为独立的两部分L[1...k-1]和L[k+1...n],使得L[1...k-1]元素都小于pivot,L[k+1...n]元素都大于或等于pivot。由上图对快速排序第一次划分的分析,黑色的6开始在前面红色的6在后面,而排完序后黑色的6在红色6的后面,当相同关键字的记录被划分到不同的子表时,可能会改变他们的顺序。最坏情况是O(n),所以平均情况下空间复杂度为O(......

Alanx的博客 1386

数据结构实验之排序八:快速排序-sdut

数据结构实验之排序八:快速排序 Time Limit:1000MSMemory Limit:65536KB SubmitStatistic Problem Description 给定N(N≤10^5)个整数,要求用快速排序对数据进行升序排列,注意不得使用STL。 Input 连续输入多组数据,每组输入数据第一行给出正整数N(≤10^5),随后给出N个整数,数字...

weixin_34337265的博客 796

7-1 数据结构实验五 快速排序

用顺序表作存储结构,输入一组数据,用快速排序法对其进行排序。

wzy992981933的博客 2207
上一篇: 日记 2018.4.6
下一篇: SDUT 2668 2-1 Point类的定义
OneTrianee
博客等级 码龄9年 32粉丝 152原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值