快排再改进

快排再改进

#include <iostream>
using namespace std;void mySwap(int &a, int &b) {int temp = a;a = b;b = temp;
}void insertSort(int a[], int left, int right) {int tmp;int in = 0;int out = 0;for (out = left + 1; out <= right; out++) {tmp = a[out];in = out;while ((in > left) && (a[in - 1] > tmp)) {a[in] = a[in - 1];in--;}a[in] = tmp;}
}long medianOf3(int a[], int left, int right) {int center = (left + right) / 2;if (a[left] > a[center])    mySwap(a[left], a[center]);if (a[left] > a[right])     mySwap(a[left], a[right]);if (a[center] > a[right])   mySwap(a[center], a[right]);mySwap(a[center], a[right - 1]);return a[right - 1];
}int partitionIt(int a[], int left, int right, long pivot) {int leftPtr = left;int rightPtr = right - 1;while (true) {while (a[++leftPtr] < pivot);while (a[--rightPtr] > pivot);if (leftPtr >= rightPtr) {break;}else {mySwap(a[leftPtr], a[rightPtr]);}}mySwap(a[leftPtr], a[right - 1]);return leftPtr;
}void quickSort(int a[], int left, int right) {int size = right - left + 1;if (10 > size) {insertSort(a, left, right);}else {long median = medianOf3(a, left, right);int partition = partitionIt(a, left, right, median);quickSort(a, left, partition - 1);quickSort(a, partition + 1, right);}
}int main() {int a[] = { 149, 192, 66, 66, 47, 152, 159, 195, 61, 66, 17, 168, 118, 64, 27, 80, 30, 105 };int len = (sizeof(a)) / sizeof(a[0]);cout << "排序之前: " << endl;for (int i = 0; i < len; i++) {cout << a[i] << " ";}cout << endl;quickSort(a, 0, len - 1);cout << "排序之后: " << endl;for (int i = 0; i < len; i++) {cout << a[i] << " ";}cout << endl;return 0;
}/*
排序之前:
149 192 66 66 47 152 159 195 61 66 17 168 118 64 27 80 30 105
排序之后:
17 27 30 47 61 64 66 66 66 80 105 118 149 152 159 168 192 195
请按任意键继续. . .
*/

转载于:https://www.cnblogs.com/hesper/p/10641049.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/249269.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux基础】crontab定时命令详解

周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep cron]。cron读取一个或多个配置文件&#xff0c;这些配置文件中包含了命令行及其调用时间。cron的配置文件称为“crontab”&#xff0c;是“cron table”的简写。 一、cron服务  cron是一个linux下 的定时执行工具&a…

5个Vue.js项目的令人敬畏的模板

开发人员查看使用SPA&#xff0c;Webpack&#xff0c;身份验证&#xff0c;GraphQL&#xff0c;文档和测试的Vue开发人员的资源。 你准备开始一个重要的Vue项目吗&#xff1f;为了确保从坚实的基础开始&#xff0c;您可以使用模板&#xff08;也就是样板&#xff0c;骨架&#…

测试多个输入条件的方法

转载于:https://www.cnblogs.com/www-qcdwx-com/p/10641281.html

问题规模

问题规模本身并没有非常精准的定义吧一般都是指运行时间t和输入参数个数n的关系用O(n)表示比如max([x])就是O(n)而冒泡排序则是O(n^2)

SSM+mybatis单元测试

初学SSMmybatis单元测试遇到的问题&#xff0c;dao注入后为nullDao层注入失败&#xff0c;查看后&#xff0c;发现注解都写的无误&#xff0c;经朋友的指点&#xff0c;在测试类上加了一句“RunWith(SpringJUnit4ClassRunner.class) ContextConfiguration(locations{“classpat…

Sublime text 2/3 中 Package Control 的安装与使用方法

Package Control 插件是一个方便 Sublime text 管理插件的插件&#xff0c;但因为 Sublime Text 3 更新了 Python 的函数&#xff0c;API不同了&#xff0c;导致基于 Python 开发的插件很多都不能工作&#xff0c;Package Control 原来的安装方法都失效了。 网上有2种使用 Git…

接口测试

集成&#xff1a; 接口&#xff0c;代码级&#xff0c;service层 unit-》service-》UI 接口测试和界面没有任何关系 A->B  数据流向 理论 我们学过&#xff0c;集成测试主要测接口&#xff0c;通过学习集成测试&#xff0c;我们发现是把单元测试通过后的方法直接需要对接的…

React-Router ---withRouter

import React from react import { withRouter } from react-router const Hello (props) > { return ( <div><button onClick{ () > props.history.push(/about) }>Hello</button></div> ) } const WithRouterHello withRouter(Hello);//也可…

vue从入门到精通之进阶篇(一)vue-router基础

路由原理 传统开发方式 url改变后 立刻发起请求&#xff0c;响应整个页面&#xff0c;渲染整个页面SPA 锚点值改变后 不会发起请求,发起ajax请求,局部改变页面数据 页面不跳转 用户体验更好 SPA single page application(单页应用程序)前端路由 锚点值监视ajax获取动态数据…

自动计算请假工时 排除周六周日

/*** 请假工时计算* starttime 开始时间 "2019-03-28 16:02", endtime 结束时间 "2019-03-29 16:02"*/ function leaveTime(starttime, endtime) {var start new Date(starttime); //start Thu Mar 28 2019 16:02:00 GMT0800 (中国标准时间)var end new…

垃圾回收与内存管理

垃圾回收机制 Javascript采用 自动垃圾收集机制&#xff0c;执行环境会负责跟踪代码执行过程中使用的内存&#xff0c;而在C和C类的语言中&#xff0c;需要开发人员手工跟踪内存的使用情况。 该机制的实现原理&#xff1a;找出那些不再继续使用的变量&#xff0c;然后释放其占用…

spring官方网站

https://docs.spring.io/spring/docs/current/spring-framework-reference/overview.html#overview

vue从入门到精通之进阶篇(三)axios

基本使用 Axios.method(url,[,..data],options) .then(function(res){ }) .catch(function(err) { } ) 合并请求 this.$axios.all([请求1,请求2]) .then( this.$axios.spread(function(res1,res2){ }) ) 拦截器 单请求配置options: axios.post(url,data,options); 全局配…

使用CSS实现图片未加载完成时占位显示

通过css控制&#xff0c;可以实现加载网络图片时&#xff0c;未加载完成的时候显示本地一张占位图&#xff0c;加载完成后显示网络图片&#xff1b; 原理&#xff1a;通过在img标签的after伪元素上添加一张占位图&#xff0c;并且img都设置为position:relative;after设置positi…

数学符号历史

https://baike.baidu.com/item/%E6%95%B0%E5%AD%A6%E7%AC%A6%E5%8F%B7/685756?fraladdin

POJ2828 Buy Ticket

传送门 题目大意&#xff1a;给一段空序列&#xff0c;每次向序列中某一个位置插入一个数&#xff0c;插入的位置后面所有数相应后移。 这个题比较令人头疼的是后移操作&#xff0c;我们不可能大面积后移。那怎么办呢&#xff1f;后面的人对前面有影响&#xff0c;那我们能不能…

vue从入门到精通之进阶篇(四)模块化工具 webpack

模块化 webpack命令 npm init -y npm install webpack3.6.0 --save-dev --registry https://registry.npm.taobao.orgpackage.json文件 "scripts": { "test": "webpack ./main.js ./build.js" },命令行运行 npm run test ES6模块 导入和导出只…

微观经济学

chapter1 导论 学经济学有啥用&#xff1f;找工作有用吗&#xff1f;没有用&#xff0c;但是当你失业的时候你就知道为什么了。为什么会有经济学&#xff1f;资源的稀缺性导致的问题&#xff01; 1.1.稀缺性 既定的资源无法满足人们的欲望。稀缺性存在于任何地方&#xff0c;产…

树结构

https://baike.baidu.com/item/%E6%A0%91%E7%BB%93%E6%9E%84/3399688?fraladdin

C#事务提交

using (System.Transactions.TransactionScope transcope new System.Transactions.TransactionScope()) { //code something transcope.Complete(); }转载于:https://www.cnblogs.com/WuHZ/p/9797373.html