技术标签: 快速排序 递归实现快速排序 数据结构 栈实现快速排序
int GetMid(int a[], int left, int right)//三数取中
{
int mid = left + (right - left) / 2;
if (a[left] <a[right])
{
if (a[mid] < a[left])
{
return left;
}
else
{
if (a[mid]>a[right])
{
return right;
}
else
{
return mid;
}
}
}
else
{
if (a[right] > a[mid])
{
return right;
}
else
{
if (a[mid] > a[left])
{
return left;
}
else
{
return mid;
}
}
}
}
//递归实现
void Re_FastSort(int a[], int left, int right)
{
if (left >= right)
{
return;
}
if (right - left < 13)
{
InsertSort(a, right - left + 1);
return;
}
int begin = left;
int end = right;
int key = GetMid(a, left, right);
swap(a[left], a[key]);
int temp = a[left];
while (begin < end)
{
while (begin<end&&a[end]>temp)
{
end--;
}
if (begin < end)
{
a[begin] = a[end];
begin++;
}
while (begin<end&&a[begin]<temp)
{
begin++;
}
if (begin < end)
{
a[end] = a[begin];
end--;
}
}
a[begin] = temp;
Re_FastSort(a, left, begin - 1);
Re_FastSort(a, begin + 1, right);
}
//栈实现
#include<stack>
void NoRe_FastSort(int a[], int left, int right)
{
assert(a);
struct left_right
{
int _left;
int _right;
left_right(int left, int right)
:_left(left)
, _right(right)
{}
};
stack<left_right>s;
s.push(left_right(left, right));
while (!s.empty())
{
int begin = s.top()._left;
int end = s.top()._right;
s.pop();
int key = GetMid(a, begin, end);
swap(a[begin], a[key]);
int temp = a[begin];
int tmpbegin = begin;
int tmpend = end;
while (tmpbegin < tmpend)
{
while (tmpbegin < tmpend && a[tmpend] > temp)
{
tmpend--;
}
if (tmpbegin < tmpend)
{
a[tmpbegin] = a[tmpend];
tmpbegin++;
}
while (tmpbegin < tmpend && a[tmpbegin] < temp)
{
tmpbegin++;
}
if (tmpbegin < tmpend)
{
a[tmpend] = a[tmpbegin];
tmpend--;
}
}
a[tmpbegin] = temp;
if (tmpbegin - 1>begin)
{
s.push(left_right(begin, tmpbegin - 1));
}
if (tmpbegin + 1 < end)
{
s.push(left_right(tmpbegin + 1, end));
}
}
}
解答如下:#include<stdio.h>int main(){ int n; scanf("%d",&n); int a[n]; int i=0; int j=0; int min=0; for(i=0;i<n;i++){ scanf("%d",&a[i]); } m...
问题写入文件的代码:fwrite($filePath, $data);同事电脑的记事本默认编码是ANSI,打开文件中文显示乱码我电脑的记事本默认编码是UTF-8,打开文件中文显示正常WPS打开文件中文显示正常,Microsoft office打开文件中文乱码解决方案方案一:写入内容之前先写入BOMfwrite($filePath, chr(0xEF).chr(0xBB).chr(0xBF));fwrite($filePath, $data);根本原因请阅读:当文件没有BO
这个博主的这个爬虫学习系列教程,很详细啊,从入门到实战、进阶等都有详细的文档介绍,对爬虫感兴趣的小伙伴推荐一看。实验楼的爬虫教程不是太多,但是都有详细的讲解和代码,而且有在线开发环境,对于学习者是非常不错的。其中最喜欢的就是那个,因为我自己超喜欢看电影。还有一个也挺好的 ,算是福利吧,哈哈。这是一个收集各种爬虫 (默认爬虫语言为 python)的集合,其中还有蛮多爬虫蛮有趣的,而且每个爬虫都有详细...
大家在这里肯定会疑惑,为什么要借助 "产品思维" 来帮助我们突破成长呢?"产品思维" 究竟好在哪里?我觉得还是有必要从 "产品经理" 的角度来揭示一下 "产品思维" 的重要性。 那么这一章节就先来聊一聊身为 "产品经理" ,他们又是如何思考、如何解决问题。先来简单认识一下这个行业以及岗位的工作内容,看看能不能从中受到对应的启发。
文章目录1、基本统计1.1、导入数据1.2、数据描述1.3、统计各值2、分组分析2.1、导入数据2.2、增加一倍数列2.3、基本统计2.4、多重分组统计2.5、查看数据2.6、多层索引查询2.6.1、建立多层索引2.6.2、索引查询2.7、重置索引、3、分布分析、3.1、导入数据3.2、数据分组3.3、统计分组数据4、交叉分析4.1、导入数据并分组4.2、交叉分析(透视表)4.2、合并DataFrame5、结构分析5.1、导入数据5.2、交叉分析(透视表)5.3、交叉分析运算6、相关关
import java.util.Comparator;import java.util.TreeMap;public class Demo3 { public static void main(String[] args) { System.out.println("使用自然排序:"); TreeMap treeMap=new TreeMap(
Problem Description人称“AC女之杀手”的超级偶像LELE最近忽然玩起了深沉,这可急坏了众多“Cole”(LELE的粉丝,即"可乐"),经过多方打探,某资深Cole终于知道了原因,原来,LELE最近研究起了著名的RPG难题:有排成一行的n个方格,用红(Red)、粉(Pink)、绿(Green)三色涂每个格子,每格涂一色,要求任何相邻的方格不能同色,且首尾两格也不同色.
一、前言服务器有时候存在多网卡,并且不同的网卡在不同的子网中,但怎么样才能划分 子网 的路由呢?(这里说的路由不是默认路由,是指定的路由)显然你不想写一段 route add 巴拉巴拉 一大堆的 在/etc/rc.local 中,因为这样只有在重启服务器时候才会生效,万一 我要是 service network restart 不就傻眼了所以可以在 /etc/sysconfig/network-s...
东北大学继续教育学院计算机网络试卷(作业考核线下)B 卷(共 5 页)注:请您单面打印,使用黑色或蓝色笔,手写完成作业。杜绝打印,抄袭作业。一、选择题(每题1分,共30分)()1.IP电话采用的交换方式为。A.分组交换B.电路交换C.报文交换D.信元交换()2.以下不属于网卡与内存的交互方式的是。A.I/O编程方式B.广播方式C.DMA方式D.内存共享方式()3.在同一个信道上的同一时刻,能够只进...
笔记2、SpringCloud的网关组件zuul基本使用 简介:讲解zuul网关基本使用 1、加入依赖 2、启动类加入注解 @EnableZuulProxy 默认集成断路器 @EnableCircuitBreaker 默认访问规则 http://gateway:port...
计算机毕业设计nodejs毕设项目之nodejs基于node.js的博客系统-IT实战课堂_哔哩哔哩_bilibili计算机毕业设计nodejs毕设项目之nodejs基于node.js的博客系统-IT实战课堂共计2条视频,包括:G08 434-nodejs基于node.js的博客系统、项目资源获取等,UP主更多精彩视频,请关注UP账号。1绪论1.1 课题研究的背景与意义。...
这一篇学习和整理私服的搭建 私服的使用在公司还是比较多的 ,会整理在window上搭建私服和linux上搭建私服!