排序详解之快速排序

快速排序

快速排序使用分治的思想,以某个数为分割点,每一趟排序下来,左边数都比它小,右边数都比它大,然后再对左右两边数组做递归操作。

时间复杂度(平均情况)n*lg(n)

排序步骤:

1.以左边首元素为分割点,拿出来存在midElement里(这时候左边首位置空了

2.从右边找比midElement小的数,放在刚才左边空的位置,就是首位(这时,右边有一个位置空了

3.从左边找比midElement大的数,放在右边空的位置

4.循环执行,直到左边索引>=右边索引

5.midElement放在当前左索引处

6.midElement为分割点,递归执行左半部分和右半部分

假设这样一组数:

5,8,1,3,7,9,2

快速排序的过程:

Step1 : 把首元素放入midElement变量中


第二步:

从右边找比MidElement小的,放左边空白位置,从左边找比midElement大的,放右边空白位置,直到leftIndex>=rightIndex



第一趟快速排序完成了,可以发现5左边的数都比5小,5右边的数都比它大。然后的步骤就是以5,左边元素为一组,右边元素为一组,做同样的事情,在此就不逐步演示了。

参考代码:

public List<int> QuickSort(List<int> arr)
        {
            var right= arr.Count-1;
           Quick_Sort(arr,0,right);
            returnarr;
        }
    
        public voidQuick_Sort(List<int> arr, int left, int right)
        {
            if (left>= right) return;
 
           
            var refNum= arr[left];
            var low =left;
            var high =right;
 
            while (low< high)
            {
                while(low < high && arr[high] >= refNum)
                   high--;
                if(low < high)
                   arr[low++] = arr[high];
 
                while(low < high && arr[low] < refNum)
                   low++;
                if(low < high)
                   arr[high--] = arr[low];
            }
            arr[low] =refNum;
 
           Quick_Sort(arr,left,right - 1);
           Quick_Sort(arr,left + 1,right);
        }




相信你现在已经明白快速排序了,感谢您的阅读!

一、数据采集层:多源人脸数据获取 该层负责从不同设备 / 渠道采集人脸原始数据,为后续模型训练与识别提供基础样本,核心功能包括: 1. 多设备适配采集 实时摄像头采集: 调用计算机内置摄像头(或外接 USB 摄像头),通过OpenCV的VideoCapture接口实时捕获视频流,支持手动触发 “拍照”(按指定快捷键如Space)或自动定时采集(如每 2 秒采集 1 张),采集时自动框选人脸区域(通过Haar级联分类器初步定位),确保样本聚焦人脸。 支持采集参数配置:可设置采集分辨率(如 640×480、1280×720)、图像格式(JPG/PNG)、单用户采集数量(如默认采集 20 张,确保样本多样性),采集过程中实时显示 “已采集数量 / 目标数量”,避免样本不足。 本地图像 / 视频导入: 支持批量导入本地人脸图像文件(支持 JPG、PNG、BMP 格式),自动过滤非图像文件;导入视频文件(MP4、AVI 格式)时,可按 “固定帧间隔”(如每 10 帧提取 1 张图像)或 “手动选择帧” 提取人脸样本,适用于无实时摄像头场景。 数据集对接: 支持接入公开人脸数据集(如 LFW、ORL),通过预设脚本自动读取数据集目录结构(按 “用户 ID - 样本图像” 分类),快速构建训练样本库,无需手动采集,降低系统开发与测试成本。 2. 采集过程辅助功能 人脸有效性校验:采集时通过OpenCV的Haar级联分类器(或MTCNN轻量级模型)实时检测图像中是否包含人脸,若未检测到人脸(如遮挡、侧脸角度过大),则弹窗提示 “未识别到人脸,请调整姿态”,避免无效样本存入。 样本标签管理:采集时需为每个样本绑定 “用户标签”(如姓名、ID 号),支持手动输入标签或从 Excel 名单批量导入标签(按 “标签 - 采集数量” 对应),采集完成后自动按 “标签 - 序号” 命名文件(如 “张三
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值