蓝桥杯试题 快速排序 QuickSort

python【蓝桥杯vip练习题库】ADV-297快速排序 试题 算法提高 快速排序 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述   用递归来实现快速排序(quick sort)算法。快速排序算法的基本思路是:假设要对一个数组a进行排序,且a[0] = x。首先对数组中的元素进行调整,使x放在正确的位置上。同时,所有比x小的数都位于它的左边,所有比x大的数都位于它的右边。然后对于左、右两段区域,递归地调用快速排序算法来进行排序。 ... 阅读详情

蓝桥杯试题 ------快速排序

问题描述

  用递归来实现快速排序(quick sort)算法。快速排序算法的基本思路是:假设要对一个数组a进行排序,且a[0] = x。首先对数组中的元素进行调整,使x放在正确的位置上。同时,所有比x小的数都位于它的左边,所有比x大的数都位于它的右边。然后对于左、右两段区域,递归地调用快速排序算法来进行排序。
  输入格式:输入只有一行,包括若干个整数(不超过10个),以0结尾。
  输出格式:输出只有一行,即排序以后的结果(不包括末尾的0)。

输入输出样例
样例输入

5 2 6 1 7 3 4 0

样例输出

1 2 3 4 5 6 7

分析

  这个题实际上就是一个简单的快速排序,只是输入末尾加了0这个限制条件。分析限制条件,可以得出用一个简单的判断就可以截出0之前的输入数字,再调用快排算法即可。
  下面介绍一下快速排序算法:
  快速排序的思想是在一列数组中选出一个基准值,然后将小于这个基准的数放在数组的左边,将大于这个基准的数放在数组的右边。因为快速排序是通过交换位置进行分组,所以会使得相同值的相对位置顺序发生改变,所以是不稳定排序算法。在完成第一轮交换之后,可以理解成将小于和大于基准值的两组数再次进行选出基准值,进行交换等这一系列操作,即进行迭代,最后得到的数组便是一个有序数组。快速排序算法以及解释会在下面的sort()方法中的注释中展示。

import java.util.Scanner;

public class QuickSortTest {
    public static void main(String[] args) {
        int i,j = 0;
        int n;
        int[] array = new int[10];
        Scanner scanner = new Scanner(System.in);
        for ( i= 0; i < 10; i++){
            n = scanner.nextInt();
            array[i] = n;
            if (n == 0){
            j = i - 1;
                break;
            }
        }
        sort(array,0,j);
        for ( i = 0; i < array.length; i++) {
            if (array[i] == 0)
                break;
            System.out.print(array[i]+" ");
        }
    }
    private static void sort(int[] array, int left,int right){
        int i,j,temp;//i和j用于数组左右两边的定位
        int standard;
        if (left > right)
            return;
        i = left;
        j = right;
        standard = array[left];//选取基准值
        //用一个二重循环实现每一轮的一次次交换过程
        while (i < j){
        //因为基准值是取最左边的元素,所以要从右边先开始,使得最后j指向的值应该小于等于基准值
            while(array[j] >= standard && i < j){
                j--;
            }
            while (array[i] <= standard && i <j){
                i++;
            }

            if (i < j){
                temp = array[i];
                array[i]= array[j];
                array[j] = temp;
            }
        }
        /*一次次的交换之后,会因为 i<j这个限制条件,使得i == j,又因为先进行j的向左找小于基准值的数,
         所以i和j共同指向的数应该是一个小于或者等于基准值的数,而在这个数的左边都是小于等于这个数的数,
        右边都是大于等于这个数的数,因此这个数应该和基准值的位置进行调换,此后,基准值的左边全是小于
        等于它的数,右边全是大于等于它的数,然后以最左边到i-1这些数为一组,最右边到i+1这些数为一组,
        再次调用方法,迭代即可。
        */
        array[left] = array[i];
        array[i] = standard;

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

}
蓝桥杯官网练习题和测评数据-算法提高173-216(共44题) 蓝桥杯练习题概览 试题集名称 试题总数 更新时间 入门训练 4 2013/10/9 基础练习 30 2013/11/3 算法训练 180 2018-03-09 算法提高 220 2018-03-09 历届试题 55 2017-12-18 包括题目和测试数据 立即下载

相关推荐

STM32F103+AX58100 EtherCAT从站SPI移植实战:CubeMX配置避坑指南

本文详细介绍了STM32F103与AX58100 EtherCAT从站控制器的SPI接口移植实战,重点解析CubeMX配置中的关键参数与常见陷阱。内容涵盖硬件连接规范、SPI模式设置、中断优先级规划及协议栈对接技巧,帮助开发者高效实现工业自动化领域的实时通信方案。特别强调CPOL/CPHA配置与AX58100的匹配要求,避免数据错位问题。

weixin_29230865的博客 330

蓝桥杯 ADV-297 算法提高 快速排序

算法提高 快速排序 时间限制:1.0s 内存限制:256.0MB 问题描述   用递归来实现快速排序(quick sort)算法。快速排序算法的基本思路是:假设要对一个数组a进行排序,且a[0] = x。首先对数组中的元素进行调整,使x放在正确的位置上。同时,所有比x小的数都位于它的左边,所有比x大的数都位于它的右边。然后对于左、右两段区域,递归地调用快速排序算法来进行排序。   输...

荔枝的FM 1225

PyQt5混搭qfluentwidgets实战:用FramelessWindow快速打造现代化界面

本文详细介绍了如何将PyQt5与qfluentwidgets组件库结合,利用FramelessWindow快速打造现代化无边框界面。通过环境配置、核心特性解析、组件混用技巧及高级样式定制,帮助开发者提升桌面应用的用户体验和美观度,特别适合需要现代UI设计的Python开发者。

sugar的博客 969

【数据结构】快速排序递归实现 _三种方法详解+优化

常见的排序算法有以上八种,所以预估会分成几期来讲,感兴趣的朋友们不妨点个收藏专栏。 ღ( ´・ᴗ・` )比心 OJ链接 快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法,其基本思想为: 任取待排序元素序列中的某元素作为基准值,按照该排序码将待排序集合分割成两子序列,左子序列中所有元素均小于基准值,右子序列中所有元素均大于基准值,然后最左右子序列重复该过程,直到所有元素都排列在相应位置上为止。 将区间按照基准值划分为左右两半部分的常见方式: Hoare法、挖坑法、前后指针法。 快排又.

Bitdancing的专栏 4064

背靠背VSC直流母线电压控制与同步发电机并网发散问题:原理、分析与解决方案

背靠背VSC直流母线电压控制与同步发电机并网发散问题分析 摘要: 本文研究了背靠背VSC系统在整流侧由理想三相电源切换为同步发电机时出现的直流母线电压振荡和发散问题。通过理论分析发现,锁相环同步失稳、等效阻抗失配和直流母线电容参数失配是导致系统失稳的关键因素。当整流侧接入同步发电机后,系统形成正反馈振荡回路,同时等效电感增大导致电流环响应速度降低,直流侧电容容量不足无法吸收发电机功率波动。文章提出了从跟网型控制到构网型VSG控制的完整升级方案,包含详细的MATLAB/Simulink建模和控制算法实现,并通

huanghm88的专栏 121

webrtc进阶-- FlexFEC 实现原理与调试分析(m80 代码对齐版)

WebRTC 中 FlexFEC 技术解析与调试指南 摘要:本文深入分析 WebRTC 的 FlexFEC(灵活前向纠错)技术实现原理,重点探讨其在 m80 版本中的协商机制、接收侧恢复流程以及 SFU 场景下的特殊处理。文章指出 FlexFEC 通过动态冗余策略提升弱网抗丢包能力,详细解析了编解码器分配、SSRC 映射、包恢复等关键环节,并提供了针对 XR+SFU 场景的调试建议。调试时可重点关注 FEC 包接收与媒体包恢复日志,以验证链路有效性。

HOSTEN的博客 48

排序算法-----快速排序(递归)

详细讲解快速排序算法的过程,图文并茂,步骤详细,有过程示例,附C语言代码实现快速排序,快进来看看吧!

m0_73633088的博客 3887

欺诈文本分类微调(一):基座模型选型

通义千问Qwen2具有0.5B、1.5B、7B、72B等一系列参数大小不等的模型,我们需要做的是从大到小依次测试每个模型的能力,找到满足自己需要的最小参数模型。依1.5B和1.5B-Instruct的主要区别:按照官方文档,前者是预训练模型,后者是经过指令微调的模型。

golfxiao的专栏 2655

快速排序算法的实现(QuickSort)

#include<iostream> using namespace std; #define N 5int Partition(int a[],int p,int r){//划分函数 int x,i; x=a[r]; i=p-1; int j; for(j=p;j<=r-1;j++){ if(a[j]<=x){

一只懒虫的博客 1242

跨平台商品模型大解析:亚马逊 vs 阿里 vs 拼多多

本文深入探讨了亚马逊、阿里巴巴和拼多多三大电商平台的商品模型设计,分析了它们在变体关系、商品抽象层级和SKU定义等方面的异同。亚马逊模型以物流和变体为中心,强调全球仓配体系下的标准化管理;阿里模型采用多视角的弹性结构,适用于多类目、多品牌、多卖家环境;拼多多模型则结合平台标准化与商家个性化,适合短期促销和快速上新场景。文章还提供了实践建议,帮助自研电商平台或商品中台的开发者选择合适的商品结构,并强调了商品模型在电商系统中的核心作用。通过对比分析,本文旨在为读者提供商品建模的启发和参考。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 13万+

【SigmaStudio】自定义算法组件之XML编写规范(一)

SigmaStudio生成自定义算法组件时,需要XML和DLB文件,本文主要记录XML文件的编码规范

liang_song的博客 1139

蓝桥杯历届试题——蚂蚁感冒

问题描述   长100厘米的细长直杆子上有n只蚂蚁。它们的头有的朝左,有的朝右。  每只蚂蚁都只能沿着杆子向前爬,速度是1厘米/秒。  当两只蚂蚁碰面时,它们会同时掉头往相反的方向爬行。  这些蚂蚁中,有1只蚂蚁感冒了。并且在和其它蚂蚁碰面时,会把感冒传染给碰到的蚂蚁。  请你计算,当所有蚂蚁都爬离杆子时,有多少只蚂蚁患上了感冒。 输入格式   第一行输入一个整数n (1 < n &l...

weixin_30832143的博客 124

Linux 内核参数:meminfo

内存管理是一个相对复杂的内核模块,错综复杂的数据结构和管理逻辑。Linux 内核为了帮助开发者从宏观上把握内存的使用情况,在几大核心数据结构中都有相应的计数统计,如物理页面使用情况、伙伴系统分配情况、内存管理区的页面使用情况、内存回收扫描回收情况、内存规整触发情况等等。本文要分析的节点meminfo是Linux 操作系统中查看系统内存最准确(meminfo 中有内存黑洞)的方法,它包含当前时刻系统的所有物理页面的信息。

私房菜 2413

机试(蓝桥杯)入门级教程

一、都要干什么呢 1.常用排序算法 2.只需要学递归、分治、贪心、动态规划 3.可以学一下STL库函数 4.编程题可以只写输入输出语句,与样例即可(因为第一个测试数据一般就是样例) 二、题目 题目描述 1.假设你有一个数组,其中第\ i i 个元素是股票在第\ i i 天的价格。 你有一次买入和卖出的机会。(只有买入了股票以后才能卖出)。请你设计一个算法来计算可以获得的最大收益。 class Solution { public: /** * * @param prices int

qq_44886213的博客 3087

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

冒泡排序、快速排序

交换排序 从小到大冒泡排序 n^2快速排序 nlogn void swap(int &i,int &j){ int temp=j; j=i; i=temp; } 冒泡排序 n^2 void BubbleSort(int A[],int n){ int i,j; for(i=0;i<n-1;i++){ bool flag=false; for(j=0;j<n-i-1;j++){ if(A[j]>A[j+1]){ swap(A[j],A[j+1

万事胜意 328

VC中sqlite的使用

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

快速排序(递归与非递归)c语言实现

1、算法设计原理分析 快速排序是对冒泡排序的一种改进,快速排序的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据比另一部分的所有数据要小,再按这种方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,使整个数据变成有序序列。 基本步骤为:1)先从数列中取出一个数作为基准数;2)分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。3)再对左右区间重复第二步,直到各区间只有一个数。 非递归实现方法,需要把递归实现中函数调用部分换为迭代中调用函数,

qq_52496633的博客 2478

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

如何使用sort快速排序

试题 算法提高 快速排序 提交此题 评测记录 资源限制时间限制:1.0s 内存限制:256.0MB问题描述 用递归来实现快速排序(quick sort)算法。快速排序算法的基本思路是:假设要对一个数组a进行排序,且a[0] = x。首先对数组中的元素进行调整,使x放在正确的位置上。同时,所有比x小的数都位于它的左边,所有比x大的数都位于它的右边。然后对于左、右两段区域,递归地调用快速排序算法来进行排序。 输入格式:输入只有一行,包括若干个整数(不超过10个),以0结尾。 输出

qq_46232829的博客 979

蓝桥杯:试题 算法提高 快速排序

蓝桥杯:试题 算法提高 快速排序 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述   用递归来实现快速排序(quick sort)算法。快速排序算法的基本思路是:假设要对一个数组a进行排序,且a[0] = x。首先对数组中的元素进行调整,使x放在正确的位置上。同时,所有比x小的数都位于它的左边,所有比x大的数都位于它的右边。然后对于左、右两段区域,递归地调用快速排序算法来进行...

潇囧囧_的博客 731

C语言递归法实现快排

C语言递归法实现快排

sxc1357sxc的博客 955

蓝桥 算法提高 快速排序 python

问题描述   用递归来实现快速排序(quick sort)算法。快速排序算法的基本思路是:假设要对一个数组a进行排序,且a[0] = x。首先对数组中的元素进行调整,使x放在正确的位置上。同时,所有比x小的数都位于它的左边,所有比x大的数都位于它的右边。然后对于左、右两段区域,递归地调用快速排序算法来进行排序。   输入格式:输入只有一行,包括若干个整数(不超过10个),以0结尾。   输出格式:...

meini32的博客 355

算法提高——快速排序

问题描述 用递归来实现快速排序(quick sort)算法。 快速排序算法的基本思路是:假设要对一个数组a进行排序,且a[0] = x。 首先对数组中的元素进行调整,使 x 放在正确的位置上。 同时,所有比 x 小的数都位于它的左边,所有比 x 大的数都位于它的右边。 然后对于左、右两段区域,递归地调用快速排序算法来进行排序。 输入格式 输入只有一行,包括若干个整数,以 0 结尾。    输出格式 输出只有一行,即排序以后的结果(不包括末尾的0)。    样例输入 5 2 6 1 7 3 4 0 样例输出

六级不考550+不改名 286

递归算法之快速排序

快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用,因此很多软件公司的笔试面试,包括像腾讯,微软等知名IT公司都喜欢考这个,还有大大小的程序方面的考试如软考,考研中也常常出现快速排序的身影。 总的说来,要直接默写出快速排序还是有一定难度的,因为本人就自己的理解对快速排序作了下白话解释,希望对大家理解有帮助,达到快速排序

zzwdkxx的专栏 1376

蓝桥杯:试题 算法提高 快速排序 Java

蓝桥杯:试题 算法提高 快速排序 Java 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述   用递归来实现快速排序(quick sort)算法。快速排序算法的基本思路是:假设要对一个数组a进行排序,且a[0] = x。首先对数组中的元素进行调整,使x放在正确的位置上。同时,所有比x小的数都位于它的左边,所有比x大的数都位于它的右边。然后对于左、右两段区域,递归地调用快速排序...

weixin_43825740的博客 611

递归算法之快速排序法

快速排序算法的基本思想是

fancy_track的博客 5042

第二周学习总结2021.1.31

筛法 题目描述 用筛法求N以内的素数。 输入 N 输出 0~N的素数 样例输入 100 样例输出 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 #include<bits/stdc++.h> using namespace std; bool f[1000005]; int main() { int n; cin>>n; f[1]=0; for(int i=

weixin_53310362的博客 210

蓝桥杯c++——试题 算法提高 快速排序

问题描述   用递归来实现快速排序(quick sort)算法。快速排序算法的基本思路是:假设要对一个数组a进行排序,且a[0] = x。首先对数组中的元素进行调整,使x放在正确的位置上。同时,所有比x小的数都位于它的左边,所有比x大的数都位于它的右边。然后对于左、右两段区域,递归地调用快速排序算法来进行排序。   输入格式:输入只有一行,包括若干个整数(不超过10个),以0结尾。   输出格式:...

行秋的博客 1121
上一篇: 蓝桥杯历届试题 --- 小数第n位(java)
下一篇: 汉诺塔问题思路清晰粗暴递归
TreeCode
博客等级 码龄7年 17粉丝 121原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值