剑指offer——面试题11:快速排序
#include"iostream"
#include"random"
using namespace std; /*
void Swap(int &a,int &b)
{
int tmp;
tmp=a;
a=b;
b=tmp;
}
*/
//官方给的partition函数
int Partition1(int *data,int start,int end)
{
int index=start+(rand()%(end-start+));
swap(data[index],data[end]);
int small=start-;
for(index=start;index<end;index++)
{
if(data[index]<data[end])
{
small++;
if(index!=small)
swap(data[index],data[small]);
}
}
small++;
swap(data[small],data[end]);
return small;
} //自定义Partition函数
int Partition2(int *data,int start,int end)
{
int value=data[start];
while(start<end)
{
while(start<end)
{
if(data[end]>value)
end--;
else
break;
}
if(start<end)
data[start++]=data[end];
while(start<end)
{
if(data[start]<=value)
start++;
else
break;
}
if(start<end)
data[end--]=data[start];
}
data[start]=value;
return start;
} void QuickSort1(int *data,int start,int end)
{
if(start==end) return; int mid=Partition1(data,start,end);
if(mid>start)
QuickSort1(data,start,mid-);
if(mid<end)
QuickSort1(data,mid+,end);
} void QuickSort2(int *data,int start,int end)
{
if(start==end) return; int mid=Partition2(data,start,end);
if(mid>start)
QuickSort2(data,start,mid-);
if(mid<end)
QuickSort2(data,mid+,end);
}
QuickSort.h
#include"QuickSort.h" void Test1()
{
int data[]={,,,,,,,,,};
cout<<"use QuickSort1:";
QuickSort1(data,,);
for(int i=;i<;i++)
cout<<data[i]<<" ";
cout<<endl;
} void Test2()
{
int data[]={,,,,,,,,,};
cout<<"use QuickSort2:";
QuickSort2(data,,);
for(int i=;i<;i++)
cout<<data[i]<<" ";
cout<<endl;
}
int main()
{
Test1();
Test2();
}
TestQuickSort.cpp
剑指offer——面试题11:快速排序的更多相关文章
- 剑指offer——面试题11:旋转数组的最小数字
#include"iostream" using namespace std; int GetMinNumber(int *data,int len) { ,right=len-, ...
- 剑指Offer面试题11(Java版):数值的整数次方
题目:实现函数double Power(double base,int exponent),求base的exponent次方.不得使用库函数,同一时候不须要考虑大数问题 1.自以为非常easy的解法: ...
- 剑指Offer:面试题11——数值的整数次方(java实现)
题目描述: 实现函数double Power(double base, int exponent),求base的exponent次方,不得使用库函数,同时不需要考虑大数问题 思路:本题的重点考察内容是 ...
- 数值的整数次方(剑指offer面试题11)
实现函数 double Power(double base, int exponent),即乘方运算. 考虑问题 exponet < 0 , 可以转化为 1.0 / Power(base, -1 ...
- 剑指Offer——笔试题+知识点总结
剑指Offer--笔试题+知识点总结 情景回顾 时间:2016.9.23 12:00-14:00 19:00-21:00 地点:山东省网络环境智能计算技术重点实验室 事件:笔试 注意事项:要有大局观, ...
- C++版 - 剑指offer 面试题23:从上往下打印二叉树(二叉树的层次遍历BFS) 题解
剑指offer 面试题23:从上往下打印二叉树 参与人数:4853 时间限制:1秒 空间限制:32768K 提交网址: http://www.nowcoder.com/practice/7fe2 ...
- C++版 - 剑指offer 面试题24:二叉搜索树BST的后序遍历序列(的判断) 题解
剑指offer 面试题24:二叉搜索树的后序遍历序列(的判断) 题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则返回true.否则返回false.假设输入的数组的任意两个 ...
- C++版 - 剑指Offer 面试题45:圆圈中最后剩下的数字(约瑟夫环问题,ZOJ 1088:System Overload类似)题解
剑指Offer 面试题45:圆圈中最后剩下的数字(约瑟夫环问题) 原书题目:0, 1, - , n-1 这n个数字排成一个圈圈,从数字0开始每次从圆圏里删除第m个数字.求出这个圈圈里剩下的最后一个数字 ...
- 剑指Offer:面试题15——链表中倒数第k个结点(java实现)
问题描述 输入一个链表,输出该链表中倒数第k个结点.(尾结点是倒数第一个) 结点定义如下: public class ListNode { int val; ListNode next = null; ...
随机推荐
- Python基础入门-while循环示例
闲来无事! 想写一些基础的东西! 比如今天的while循环,,,,,, 很多python初学者,最开始学习python的时候,会被while循环给干蒙蔽! 那么今天,小编为大家讲解一些基础的实例,来帮 ...
- 在IE11(Win10)中检查up6.2配置
1.按F12,打开调试模式 2.打开调试程序选项卡 说明:在调试程序选项卡中可看到IE加载的脚本信息是否正确.因为IE有缓存,导致脚本有时不是最新的. 3.打开脚本,up6.js ...
- 【Android学习】实现卡片式ListView
效果: 主要是设置xml文件 两种状态下的item card_background.xml <?xml version="1.0" encoding="utf-8& ...
- (11)Web程序保存状态的几种方式,Application,Session,Cookie,ViewState
WEb程序保存状态的方式有这样几种: 1.Application:保存在Application中的数据是全局有效的:Application里面存放的应该是访问多修 改较少并且是全局至少大部分 ...
- cmake的一些词的解释
cmake中一些预定义变量 PROJECT_SOURCE_DIR 工程的根目录 PROJECT_BINARY_DIR 运行cmake命令的目录,通常是${PROJECT_SOURCE_DIR} ...
- POJ2513 Colored Sticks(Trie+欧拉回路)
Description You are given a bunch of wooden sticks. Each endpoint of each stick is colored with some ...
- XE下 SVG格式的图标使用方法
下载一个SVG格式的图标,千图网,http://tool.58pic.com/tubiaobao/ 用txt文本打开SVG图标 拖一个PathLabel控件 在PathLabel控件的Data属性添加 ...
- 我用Django搭网站(3)-表单RSA加密
之前开发项目时因为种种原因一直使用明文提交,表单直接明文提交非常不安全,只要稍加操作就能轻易获取用户的信息.在众里寻他千百度之后决定使用RSA加密方式,简单可靠. 项目准备 一.安装PyCrypto库 ...
- springcloud提供开放api接口签名验证
一.MD5参数签名的方式 我们对api查询产品接口进行优化: 1.给app分配对应的key.secret 2.Sign签名,调用API 时需要对请求参数进行签名验证,签名方式如下: a. 按照请求参数 ...
- mysql sp 练习游标和预编译
create procedure Jack_count_cur_dual() BEGIN ); ; DECLARE mycur CURSOR for SELECT table_name FROM tt ...