软件测试项目sort排序,快速排序方法及其单元测试

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace SortPractice

{

class MyQuickSorter

{

public int[] Sort(int[] src,int leftIndex,int rightIndex)

{

int left = leftIndex;

int right =rightIndex;

if (left < right)

{

int i = left;

int j = right + 1;

int guard = src[left];

int temp = 0;

do

{

do

{

i++;

}

while (  i < right &&src[i] < guard);

do

{

j--;

}

while (src[j] > guard && j > left);

if (i < j)

{

temp = src[i];

src[i] = src[j];

src[j] = temp;

}

} while (i < j);

temp = src[j];

src[j] = guard;

//guard = temp;

src[left] = temp;

Sort(src, left, j - 1);

Sort(src, j+1, rightIndex);

}

return null;

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Algorithms   本次README修订为算法仓库Algorithms的第100次commit,首先我们庆祝自2016年8月4日本仓库建立以来Dev-XYS在算法学习方面取得的显著进步!   这里有各种算法的C++代码,任何人可以在自己的任何程序中使用,欢迎大家指出代码中的错误以及有待改进的地方。   本仓库内所有代码的授权方式为Unlicense,大家如果使用我的代码开发自己的软件挣了大钱,或是参考我的代码在NOI中得了金牌,我都会很高兴的。使用这里的代码之后,你可以自主选择是否公开源代码。总而言之,你可以把这里的代码当作你自己写的一样,无论怎样使用都是被允许的。但是,我不对本仓库内代码的正确性负责。大家要是使用我的代码开发软件而导致程序崩溃,或是参考我的代码在考试时出错,请不要向我抱怨。如果你愿意,遇到问题可以在Issues中提出来,我们共同解决。我们不赞成Pull Request,因为本仓库主要储存作者已经学习的算法,全部代码均由作者本人负责维护与更新。   以下索引提供了本仓库内算法的中文名,方便大家查找。更新可能有很长时间的延迟,不保证所有算法的名称都在列表中出现。 Index --------------------------Contents-------------------------- --------------------------FileName-------------------------- AC自动机 Aho-Corasick-Automation 单源最短路径(SPFA) Bellman-Ford(Queue-Optimised) 单源最短路径(Bellman-Ford) Bellman-Ford 使用Edmonds-Karp进行二分图匹配 Bigrpah-Matching(Edmonds-Karp) 普通的二叉搜索树 Binary-Search-Tree 广度优先搜索 Breadth-First-Search 冒泡排序 Bubble-Sort排序 Bucket-Sort 组合数的递推求解 Combination(Recursion) 枚举组合 Combination 基本的复数类 Complex-Number 割点 Cut-Vertex 深度优先搜索 Depth-First-Search 堆优化的Dijkstra算法 Dijkstra(Heap-Optimised) 并查集 Disjoint-Set-Union 最大流Edmonds-Karp算法 Edmonds-Karp 欧拉函数 Euler's-Totient-Function 有向图的欧拉回路 Eulerian-Tour(Digraph) 拓展欧几里得算法 Extended-Euclid 简单的快速幂 Fast-Exponentiation 树状数组 Fenwick-Tree 所有结点对之间的最短路径(Floyd) Floyd-Warshall 凸包算法(Graham扫描法) Graham-Scan 辗转相除法求最大公约数 Greatest-Common-Divisor 堆排序 Heap-Sort ISAP算法 Improved-Shortest-Augmenting-Path(Naive) 插入排序 Insertion-Sort 字符串匹配(KMP) Knuth-Morris-Pratt 最小生成树(Kruskal) Kruskal 最近公共祖先(Tarjan) Least-Common-Ancestor(Tarjan) 使用后缀数组求解最长公共子串 Longest-Common-Substring 最长上升子序列(n·log(n)) Longest-Increasing-Subsequence(n·log(n)) 倍增法求最近公共祖先 Lowest-Common-Ancestor(Doubling) 朴素的矩阵乘法 Matrix-Multiplication(Naive) 归并排序 Merge-Sort 最小堆 Min-Heap 乘法逆元 Modular-Multiplicative-Inverse 仅支持单点修改的可持久化线段树(维护区间和值) Persistent-Segment-Tree(Sum) 试除法素数测试 Prime-Check(Naive) 线性的素数筛法 Prime-Sieve(Linear) 队列的基本操作 Queue 快速排序的优化版本 Quick-Sort(Extra-Optimised) 快速排序的随机化版本 Quick-Sort(Randomized) 快速排序 Quick-Sort 使用向量叉积判断两个有向线段的时针关系 Segment-Direction 线段树维护区间最大值 Segment-Tree(Maximum) 线段树维护区间最小值 Segment-Tree(Minimum) 线段树维护区间和值 Segment-Tree(Sum) 普通的选择算法 Selection Eratosthenes素数筛法 Sieve-of-Erotosthenes 指针版的单向链表 Singly-Linked-List(Pointer) 跳表 Skip-List ST表 Sparse-Table 伸展树 Splay 博弈论SG函数 Sprague-Grundy 栈的基本操作 Stack 递推法求解无符号第一类斯特林数 Stirling-Number(Cycle,Unsigned,Recursion) 递推法求解第二类斯特林数 Stirling-Number(Subset,Recursion) 倍增法求解后缀数组 Suffix-Array(Doubling) 倍增法求解后缀数组(附带Height数组) Suffix-Array-with-Height(Doubling) 使用Tarjan算法求解强连通分量 Tarjan(Strongly-Connected-Components) 数组版的字典树 Trie(Array) 指针版的字典树 Trie(Pointer)
<项目介绍> 机器学习应用基于Python实现的监控视频行人轨迹搜索项目+使用说明(毕业设计源码).zip 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到94.5分,放心下载使用! 该资源适合计算机相关专业(如人工智能、通信工程、自动化、软件工程等)的在校学生、老师或者企业员工下载,适合小白学习或者实际项目借鉴参考! 当然也可作为毕业设计、课程设计、课程作业、项目初期立项演示等。如果基础还行,可以在此代码基础之上做改动以实现更多功能。 基于Python的机器学习应用,针对监控视频完成行人轨迹搜索。通过一张目标图像,能自动从大量视频中搜索出包含目标的视频片段,并标记目标。此项目为本人本科毕业设计项目。 运行环境 ``` Python 3.6.2 TensorFlow-GPU 1.6.0 opencv-python numpy 1.18.1 keras 2.2.0 scikit-learn pillow ``` 适用平台 笔者在Windows 10上基于Visual Stdio Code开发,但并不代表此项目存在平台限制 项目算法简述 预处理过程(edg_code),图见edg_algorithm_structure.png ``` 1. 基于三帧差分法,结合阈值法,对数据量庞大的监控视频文件进行预处理,去除其中的无意义部分(无行人出现),分割视频得到大量的视频片段。 2. 对每个视频片段基于YOLO算法,进行行人识别 [此处算法以及模型来源详见引用] 3. 结合YOLO和Deep Sort进行行人轨迹追踪 [此处算法以及模型来源详见引用] 4. 基于Caffe算法对行人人脸进行识别并评分,缓存评分较高的人脸(存在最大数量限制) 5. 基于EigenFace/LBPHFace, 对前面缓存的人脸建立模型文件 6. 将行人轨迹缓存结果与人脸模型文件关联,即预处理结果 ``` 搜索过程(client),图见client_algorithm_structure.png ``` 1. 对输入图片基于caffe算法截取人脸部分 2. 基于EigenFace/LBPHFace, 将目标人脸与预处理得到的人脸模型比对,得到置信度 3. 通过对置信度排序,并截取适当比例的结果,作为搜索结果输出 ``` 运行说明 code for edg(执行过程耗时) 下面的main.py统一指代为 search_from_videos/edg_code/main.py ``` # 将待处理的单个/多个视频文件(支持mp4)放入main.py中row_path指定的目录中 python main.py # 根据环境自动修正设置 # 程序将自动在main.py中video_path和save_path指定路径生成处理参数 ``` code for client(运行过程快速) 下面的main.py统一指代为 search_from_videos/client/main.py ``` # 在main.py中image_path指定待搜索的目标人物的照片 # main.py中的pre_dict和result_dict指向为edg_code生成的对应目录video_path和save_path python main.py # 根据环境自动修正设置 # 程序会自动在main.py中search_result_path指定路径生成搜索结果
《编程实训》 实验报告书 专 业:计算机科学与技术 班 级:151班 学 号: 姓 名: 指导教师: 日 期:2016年6月30日 目录 一、需求分析…………………………………………………………………………………3 1.任务要求……………………………………………………………………………………3 2.软件功能分析………………………………………………………………………………3 3.数据准备……………………………………………………………………………………3 二、概要设计…………………………………………………………………………………3 1.功能模块图………………………………………………………………………………4 2.模块间调用关系…………………………………………………………………………4 3.主程序模块………………………………………………………………………………5 4.抽象数据类型描述…………………………………………………………………………5 三、详细设计…………………………………………………………………………………6 1.存储结构定义………………………………………………………………………………6 2.各功能模块的详细设计……………………………………………………………………7 四、实现和调试………………………………………………………………………………7 1.主要的算法………………………………………………………………………………7 2.主要问题及解决…………………………………………………………………………8 3.测试执行及结果……………………………………………………………………………8 五、改进………………………………………………………………………………………9 六、附录……………………………………………………………………………………9 1.查找源程序………………………………………………………………………………9 2.排序源程序………………………………………………………………………………9 目录 1 需求分析 1.1 任务要求 对于从键盘随机输入的一个序列的数据,存入计算机内,给出各种查找算法的实 现;以及各种排序算法的实现。 1.2 软件功能分析 任意输入n个正整数,该程序可以实现各类查找及排序的功能并将结果输出。 1.3 数据准备 任意输入了5个正整数如下: 12 23 45 56 78 2 概要设计(如果2,3合并可以省略2.4) 2.1 功能模块图(注:含功能说明) 2.2 模块间调用关系 2.3 主程序模块 2.4 抽象数据类型描述 存储结构:数据结构在计算机中的表示(也称映像)叫做物理结构。又称为存储结构。 数据类型(data type)是一个"值"的集合和定义在此集合上的一组操作的总称。 3 详细设计 3.1 存储结构定义 查找: typedef int ElemType ; //顺序存储结构 typedef struct { ElemType *elem; //数据元素存储空间基址,建表时按实际长度分配,号单元留空 int length; //表的长度 }SSTable; 排序: typedef struct { //定义记录类型 int key; //关键字项 }RecType; typedef RecType SeqList[Max+1]; //SeqList为顺序表,表中第0个元素作为哨兵 3.2 各功能模块的详细设计 查找: void Create(SSTable *table, int length); // 构建顺序表 void FillTable(SSTable *table) // 无序表的输入 int Search_Seq(SSTable *table, ElemType key); //哨兵查找算法 void Sort(SSTable *table ) // 排序算法 int Search_Bin(SSTable *table, ElemType key) // 二分法查找(非递归) 排序: void InsertSort(SeqList R) //对顺序表R中的记录R[1 n]按递增序进行插入排序 void BubbleSort(SeqList R) //自下向上扫描对R做冒泡排序 int Partition(SeqList R,int i,int j)//对R[i j]做一次划分,并返回基准记录的位置 void QuickSort(SeqList R,int low,int high) //R[low..high]快速排序 void SelectSort(SeqList R) //直接选择排序 void Heapify(SeqList R,int low,int high) //大根堆调整函数 v

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值