第十六周项目1-(2)快速排序

第十六周项目1(2)——快速排序 /*Copyright (c) 2015,烟台大学计算机学院 *All right reserved *文件名称:main.cpp *作者:姜延锴 *完成日期:2016年12月16日 *版本号:v1.0 *问题描述:验证快速排序,完成测试。 *输入描述:无 *程序输出:测试数据 */ 代码,以第一元素为准 #include #define MaxSize 20 typedef int Key 阅读详情

问题及代码:

  1. /*   
  2. * Copyright (c)2016,烟台大学计算机与控制工程学院   
  3. * All rights reserved.   
  4. * 文件名称:项目1.cpp   
  5. * 作    者:董雪  
  6. * 完成日期:2016年12月14日   
  7. * 版 本 号:v1.0    
  8. *问题描述:验证快速排序,完成测试。 
  9. *输入描述:无   
  10. *程序输出:测试数据   
  11. */    

交换排序之快速排序:

1.以第一个元素为基准

#include <stdio.h>  
#define MaxSize 20  
typedef int KeyType;    //定义关键字类型  
typedef char InfoType[10];  
typedef struct          //记录类型  
{  
    KeyType key;        //关键字项  
    InfoType data;      //其他数据项,类型为InfoType  
} RecType;              //排序的记录类型定义  
void QuickSort(RecType R[],int s,int t) //对R[s]至R[t]的元素进行快速排序  
{  
    int i=s,j=t;  
    RecType tmp;  
    if (s<t)                //区间内至少存在两个元素的情况  
    {  
        tmp=R[s];           //用区间的第1个记录作为基准  
        while (i!=j)        //从区间两端交替向中间扫描,直至i=j为止  
        {  
            while (j>i && R[j].key>=tmp.key)  
                j--;        //从右向左扫描,找第1个小于tmp.key的R[j]  
            R[i]=R[j];      //找到这样的R[j],R[i]"R[j]交换  
            while (i<j && R[i].key<=tmp.key)  
                i++;        //从左向右扫描,找第1个大于tmp.key的记录R[i]  
            R[j]=R[i];      //找到这样的R[i],R[i]"R[j]交换  
        }  
        R[i]=tmp;  
        QuickSort(R,s,i-1);     //对左区间递归排序  
        QuickSort(R,i+1,t);     //对右区间递归排序  
    }  
}  
int main()  
{  
    int i,n=10;  
    RecType R[MaxSize];  
    KeyType a[]= {6,8,7,9,0,1,3,2,4,5};  
    for (i=0; i<n; i++)  
        R[i].key=a[i];  
    printf("排序前:");  
    for (i=0; i<n; i++)  
        printf("%d ",R[i].key);  
    printf("\n");  
    QuickSort(R,0,n-1);  
    printf("排序后:");  
    for (i=0; i<n; i++)  
        printf("%d ",R[i].key);  
    printf("\n");  
    return 0;  
}  

运行结果截图:


2.以中间位置的元素为基准

#include <stdio.h>  
#define MaxSize 20  
typedef int KeyType;    //定义关键字类型  
typedef char InfoType[10];  
typedef struct          //记录类型  
{  
    KeyType key;        //关键字项  
    InfoType data;      //其他数据项,类型为InfoType  
} RecType;              //排序的记录类型定义  
void QuickSort1(RecType R[],int s,int t) //对R[s]至R[t]的元素进行快速排序  
{  
    int i=s,j=t;  
    KeyType pivot;  
    RecType tmp;  
    pivot = R[(s+t)/2].key; //用区间的中间位置的元素作为关键字  
    if (s<t)                //区间内至少存在两个元素的情况  
    {  
        while (i!=j)        //从区间两端交替向中间扫描,直至i=j为止  
        {  
            while (j>i && R[j].key>pivot)  
                j--;        //从右向左扫描,找第1个小于基准的R[j]  
            while (i<j && R[i].key<pivot)  
                i++;        //从左向右扫描,找第1个大于基准记录R[i]  
            if(i<j)        //将前后的两个失序元素进行交换  
            {  
                tmp=R[i];  
                R[i]=R[j];  
                R[j]=tmp;  
            }  
        }  
        QuickSort1(R,s,i-1);        //对左区间递归排序  
        QuickSort1(R,j+1,t);        //对右区间递归排序  
    }  
}  
int main()  
{  
    int i,n=10;  
    RecType R[MaxSize];  
    KeyType a[]= {6,8,7,9,0,1,3,2,4,5};  
    for (i=0; i<n; i++)  
        R[i].key=a[i];  
    printf("排序前:");  
    for (i=0; i<n; i++)  
        printf("%d ",R[i].key);  
    printf("\n");  
    QuickSort1(R,0,n-1);  
    printf("排序后:");  
    for (i=0; i<n; i++)  
        printf("%d ",R[i].key);  
    printf("\n");  
    return 0;  
}  

运行结果截图:



第16周项目1-验证算法(4)快速排序 以第1个元素作为基准 /* * Copyright (c)2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名称:项目1-2.cbp * 作 者:滕健 * 完成日期:2016年12月09日 * 问题描述:验证快速排序 * 输入描述:无 * 程序输出:测试数据 */ #include #define MaxSize 阅读详情

相关推荐

第十六周项目2—— 大数据集上排序算法性能的体验

/*Copyright (c) 2015,烟台大学计算机学院 *All right reserved *文件名称:main.cpp *作者:姜延锴 *完成日期:2016年12月16日 *版本号:v1.0 *问题描述:采用归并排序、快速排序等高效算法进行排序,当数据元素较少时(如n≤64),经常直接使用直接插入排序算法等高复杂度的算法。这样做,会带来一定的好处,例如归并排序减少分配、回收临时存储区域

jiangyankai6127的博客 495

(排序)快速排序QuickSort

主要内容: 1、算法思想 2、快速排序算法 3、划分算法partition 4、快排过程图解 5、完整代码   1、算法思想 快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。 (1) 分治法的基本思想     分治法的基本思想是:将原问题分解为若干个规模更小但结构与原...

weixin_34107955的博客 142

生存分析机器学习问题

然而,随着人工智能 (AI) 和机器学习 (ML) 的兴起,科学家现在能够开发更复杂的模型,揭示这些数据集中的模式和特征,从而为癌症的生物学、诊断、预后、治疗和预后提供新的见解。病情更重的患者可能接受更强(或更弱)的治疗,导致治疗方案与不良预后(死亡)强相关。数据集中包含失访或研究结束时仍存活的患者(删失数据),他们的真实生存时间未知,仅知道其存活时间不低于观察到的最后一次随访时间。优先选择参数少、结构简单的模型(如带强正则化的线性模型、简单树模型),避免复杂模型(如深度神经网络)。时刻的状态是未知的。

4AM_明朝百晓生 1223

第十六周项目1-(4)堆排序

问题及代码: /*    * Copyright (c)2016,烟台大学计算机与控制工程学院    * All rights reserved.    * 文件名称:项目1.cpp    * 作    者:董雪 * 完成日期:2016年12月14日    * 版 本 号:v1.0     *问题描述:验证堆排序,完成测试。  *输入描述:无    *程序输出:测试

vip____的博客 271

Jetson AGX Orin 新手避坑:解决‘找不到nvidia-jetpack包’的完整修复指南

本文详细介绍了Jetson AGX Orin设备在安装JetPack开发套件时遇到的'nvidia-jetpack包缺失'问题的完整解决方案。通过分析问题根源、提供分步修复指南以及系统优化建议,帮助开发者快速解决这一常见问题,充分发挥Jetson AGX Orin的边缘计算性能。

weixin_42520909的博客 461

VScode搭建Opencv(C++开发环境)

VScode配置Opencv一、准备软件二 、下载软件1、MinGw下载2、 Cmake下载3、Opencv下载三、编译1、cmake-gui2、make3、install四、 VScode配置1、launch.json2、c_cpp_properties.json3、tasks.json五、测试 用了半天事件,看了各种的博客终于配置成功了,在这里记录并分享一下,让更多的人少走弯路。 本次环境是Win 10. 一、准备软件 我们本次用到的3个软件,(建议读者文件路径,文件版本 尽量都和我相同,这样不容易出错

河旬的博客 8万+

第十六周上及项目一

/* *Copyright (c) 2014, 烟台大学计算机学院 *All rights reserved. *文件名称:test.cpp *作者:陈栋梁 *完成日期:2014年 12月 11 日 *版本号:v1.0 * *问题描述: */ #include using namespace std; void sort(int *p, int num);

m130494的专栏 343

基于OpenCV C++实现工业级形状模板匹配:仿Halcon SBM算法全解析

在计算机视觉和工业自动化领域,模板匹配是一项基础且关键的技术,用于在图像中定位已知目标。其核心原理是通过计算图像区域与预设模板之间的相似度来识别目标位置。传统的基于灰度值的匹配方法对光照变化敏感,鲁棒性不足。而基于边缘梯度方向的形状匹配技术,通过计算轮廓梯度方向的一致性进行相似度度量,从根本上提升了对光照变化的鲁棒性,并支持目标的旋转与缩放,技术价值显著。这项技术广泛应用于工业视觉检测、机器人引导、PCB定位等对精度和稳定性要求极高的场景。本文聚焦于使用开源OpenCV库,从底层仿照Halcon的Shape

weixin_33691817的博客 502

第十六周项目一 直接排序法

直接选择法: #include using namespace std; int main() { int a[50]={57, 40, 38, 11, 13, 34, 48, 75, 6, 19, 9, 7}; int i=0,j=0,k; while(i<11) { k=i; j=i+1;

wangxiaohui6128的博客 408

从零搭建企业网络:使用Packet Tracer模拟多区域OSPF组网全过程

本文通过Cisco Packet Tracer模拟,详细演示了从零搭建一个典型企业多区域OSPF网络的完整流程。内容涵盖网络拓扑规划、IP地址设计、多区域划分原理,并提供了从设备初始化、接口配置到OSPF多区域核心配置与验证的详细步骤。文章旨在帮助网络学习者与IT支持人员通过动手实验,将理论知识转化为实际的配置与排障能力。

day7的博客 1031

A-Level CS 计算机科学 考试知识点——考试介绍&第1章

前言:该系列文章是本人在给学生辅导本课程的过程中结合英文教材所总结的,该系列共分为30章,主要介绍了考试的核心知识点。若需要A-Level CS 计算机科学考试辅导也可以私信我。 目录 关于A-Level CS 计算机科学考试 考试简介 考试内容 考试时间 评分情况 第1章 信息表示 本章学习内容 1.01 数字系统 1.02 数字的内部编码 整数编码(Coding for integers) 二进制编码的十进制(Binary coded decimal——BCD) 1.03.

王俊的博客 6458

第十六周 项目1 验证算法 快速排序

快速排序: 1).以第一个元素为基准 #include #define MaxSize 20 typedef int KeyType; //定义关键字类型 typedef char InfoType[10]; typedef struct //记录类型 { KeyType key; //关键字项 InfoType data;

balabala0322的博客 442

冷门但实用:Python爬取微信公众号历史文章,突破微信反爬限制(2025有效)

2025年微信公众号爬取的核心是「冷门方法+指纹伪装」,而非常规接口破解,itchat-uos+Playwright组合是突破设备指纹的关键;登录态持久化、动态Token实时获取、频率严格控制是避免被封禁的三大核心;文章内容解析需解决2025新增的编码混淆问题,chardet+BeautifulSoup是冷门但有效的方案;合规是前提,爬取频率、数据用途需严格遵守平台/法律规则。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 3780

【第十六周 项目1(2)—快速排序】

问题及代码: /*  * Copyright (c)2015级,烟台大学 计算机与控制工程学院  * All rights reserved.  * 文件名称:项目1.cpp  * 作    者:胡馨月 * 完成日期:2016年12月15日  * 版 本 号:v1.0   *问题描述:验证快速排序,完成测试。 *输入描述:无  *程序输出:测试数据  *

weixin_35998801的博客 890

rk3506上移植lvgl应用

本文介绍在RK3506开发板上移植和运行LVGL图形库的方法。

m0_60805802的博客 1164

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

第十六周实践项目(1)—验证算法2快速排序

/* Copyright (c)2015,烟台大学计算机与控制工程学院 All rights reserved. 文件名称:项目1-2.cbp 作 者:刘晨筱 完成日期:2015年12月14日 版 本 号:v1.0 问题描述:用序列{57, 40, 38, 11, 13, 34, 48, 75, 6, 19,

优快云如何转载别人博客 474

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

第十六周上机实践—项目1(2)—验证算法 希尔排序 快速排序

/* *Copyright(c) 2015,烟台大学计算机学院 *All rights reserved. *文件名称:test.cpp *作者:林莉 *完成日期:2015年12月14日 *版本:v1.0 * *问题描述:用序列{57, 40, 38, 11, 13, 3

Lin1287的博客 570

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

第十六周项目1(2)--验证算法之快速排序

问题及代码: /* * Copyright (c)2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名称:项目1.cpp * 作 者:陈哲 * 完成日期:2016年12月15日 * 版 本 号:v1.0 *问题描述:验证快速排序,完成测试。 *输入描述:无 *程序输出:测试数据 */

sdchenzhe的博客 335

第十六周项目5 快速排序

/* * Copyright (c)2015,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名称:项目5.cbp * 作 者:朱希康 * 完成日期:2015年12月18日 * 版 本 号:v1.0 * 问题描述:对一组数据进行排序 * 程序输出:排序后的结果 */ 以第一个关键字为基准数据: #include #define

zxk201458506144的博客 409

第十六周 项目一 验证快速排序算法

#ifndef BTREE_H_INCLUDED #define BTREE_H_INCLUDED /* *烟台大学计控学院 *作 者:林颖 *完成日期:2016年12月16日 *问题描述:用序列{57, 40, 38, 11, 13, 34, 48, 75, 6, 19, 9, 7}作为测试数据,验证快速排序 */ #endif // BTREE_

linying3121的博客 800

第十六周项目一 验证算法——快速排序

问题及代码: /* *烟台大学计算机与控制工程学院 *作 者:孙丽玮 *完成日期:2016年12月9日 *问题描述:用序列{57,40,38,11,13,34,48,75,6,19,9,7}作为测试数据,运行并本周视频中所讲过的算法对应程序,观察运行结果并深刻领会算法的思路和实现方法。 (1)直接插入排序;(2)希尔排

AFencounter的博客 419

第十六周 项目一(1) 验证快速排序算法

问题描述及代码: #ifndef BTREE_H_INCLUDED #define BTREE_H_INCLUDED /* *烟台大学计控学院 *作 者:杨征 *完成日期:2015年12月14日 *问题描述:用序列{57, 40, 38, 11, 13, 34, 48, 75, 6, 19, 9, 7}作为测试数据,验证快速排序 */ #endif // BTREE_H

wly16885885的博客 374

第十六周上机实践—项目2—大数据集上排序算法性能的体验

/* *Copyright(c) 2015,烟台大学计算机学院 *All rights reserved. *文件名称:test.cpp *作者:林莉 *完成日期:2015年12月18日 *版本:v1.0 * *问题描述:设计一个函数,产生一个至少5万条记

Lin1287的博客 669

第十六周项目1-验证算法(4)快速排序

问题: /* * Copyright (c)2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名称:项目1-4.cbp * 作 者:杨雅鑫 * 完成日期:2016年12月13日 * 版 本 号:v1.0 * 问题描述:验证快速排序 * 输入描述:无 * 程序输出:测试数据

yyx的博客 278
上一篇: 第十六周项目1-验证算法(1)冒泡排序
下一篇: 第十六周项目1-(3)直接选择排序
vip____
博客等级 码龄10年 5粉丝 75原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值