当前位置: 首页 > news >正文

quick sort(重复数版)

针对数组中有大量重复数优化

example

// 1,3,4,7,7,7,17,11,1,7

 1 void QuickSort(int* arr, int from, int to);
 2 void QSort(int* arr, int size);
 3 
 4 void QuickSort(int* arr, int from, int to)
 5 {
 6     if(from >= to)    return;
 7     int pivot = arr[to];
 8     // save the numbers of who's value equals pivot
 9     int numsOfPivot = 0;
10     int border = from;
11 //                b     i
12 //    1,3,4,7,7,7,17,11,1,7
13     for(int i = from; i <= to; i++)
14     {
15         if(arr[i] < pivot)
16         {
17             int temp = arr[i];
18             arr[i] = arr[border];
19             arr[border - numsOfPivot] = temp;
20             ++border;
21         }
22         else if(arr[i] == pivot)
23         {
24             ++numsOfPivot;
25             arr[i] = arr[border];
26             ++border;
27         }
28     }
29     // refill the duplicate of pivot at the behind of border
30     while(numsOfPivot != 0)
31     {
32         arr[border-numsOfPivot] = pivot;
33         --numsOfPivot;
34     }
35     QuickSort(arr,from,border-2-numsOfPivot);
36     QuickSort(arr,border,to);
37 }
38 
39 void QSort(int* arr, int size)
40 {
41     QuickSort(arr, 0, size-1);
42 }

 

转载于:https://www.cnblogs.com/endenvor/p/9655350.html

相关文章:

  • 二层负载分担(一)
  • Material Design 实战 之第三弹—— 悬浮按钮和可交互提示(FloatingActionButton Snackbar CoordinatorLayout)...
  • WPF一步步实现完全无边框自定义Window(附源码)
  • 简单易懂的laravel事件,这个功能非常的有用(监听事件,订阅者模式)
  • express中间件系统的基本实现
  • iOS开发 适配iPhoneX/iPhoneXr/iPhoneXs/iPhonexs max
  • 互融云采购招标供应链系统:为供应链行业创造良好环境
  • 第一次作业
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • 大数据
  • TitleBar 的那些设置
  • FR 在数据库查询中使用模板参数
  • 07-文本属性和字体属性,超链接导航栏案例,background,
  • python数据结构转换格式化
  • 服务器连接不成功测试办法
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • Angular 2 DI - IoC DI - 1
  • Angular2开发踩坑系列-生产环境编译
  • download使用浅析
  • Gradle 5.0 正式版发布
  • Java编程基础24——递归练习
  • JS函数式编程 数组部分风格 ES6版
  • magento 货币换算
  • Redis字符串类型内部编码剖析
  • SQL 难点解决:记录的引用
  • 从setTimeout-setInterval看JS线程
  • 服务器从安装到部署全过程(二)
  • 诡异!React stopPropagation失灵
  • 基于webpack 的 vue 多页架构
  • 坑!为什么View.startAnimation不起作用?
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 算法---两个栈实现一个队列
  • 以太坊客户端Geth命令参数详解
  • 做一名精致的JavaScripter 01:JavaScript简介
  • ​ubuntu下安装kvm虚拟机
  • ​低代码平台的核心价值与优势
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (5)STL算法之复制
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (WSI分类)WSI分类文献小综述 2024
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (力扣)1314.矩阵区域和
  • (万字长文)Spring的核心知识尽揽其中
  • (转)http-server应用
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网
  • .md即markdown文件的基本常用编写语法
  • .NET CORE Aws S3 使用
  • .NET/C# 中设置当发生某个特定异常时进入断点(不借助 Visual Studio 的纯代码实现)
  • .netcore 6.0/7.0项目迁移至.netcore 8.0 注意事项
  • .net的socket示例
  • .NET开发者必备的11款免费工具
  • .NET设计模式(11):组合模式(Composite Pattern)