#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:快速排序的更多相关文章

  1. 剑指offer——面试题11:旋转数组的最小数字

    #include"iostream" using namespace std; int GetMinNumber(int *data,int len) { ,right=len-, ...

  2. 剑指Offer面试题11(Java版):数值的整数次方

    题目:实现函数double Power(double base,int exponent),求base的exponent次方.不得使用库函数,同一时候不须要考虑大数问题 1.自以为非常easy的解法: ...

  3. 剑指Offer:面试题11——数值的整数次方(java实现)

    题目描述: 实现函数double Power(double base, int exponent),求base的exponent次方,不得使用库函数,同时不需要考虑大数问题 思路:本题的重点考察内容是 ...

  4. 数值的整数次方(剑指offer面试题11)

    实现函数 double Power(double base, int exponent),即乘方运算. 考虑问题 exponet < 0 , 可以转化为 1.0 / Power(base, -1 ...

  5. 剑指Offer——笔试题+知识点总结

    剑指Offer--笔试题+知识点总结 情景回顾 时间:2016.9.23 12:00-14:00 19:00-21:00 地点:山东省网络环境智能计算技术重点实验室 事件:笔试 注意事项:要有大局观, ...

  6. C++版 - 剑指offer 面试题23:从上往下打印二叉树(二叉树的层次遍历BFS) 题解

    剑指offer  面试题23:从上往下打印二叉树 参与人数:4853  时间限制:1秒  空间限制:32768K 提交网址: http://www.nowcoder.com/practice/7fe2 ...

  7. C++版 - 剑指offer 面试题24:二叉搜索树BST的后序遍历序列(的判断) 题解

    剑指offer 面试题24:二叉搜索树的后序遍历序列(的判断) 题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则返回true.否则返回false.假设输入的数组的任意两个 ...

  8. C++版 - 剑指Offer 面试题45:圆圈中最后剩下的数字(约瑟夫环问题,ZOJ 1088:System Overload类似)题解

    剑指Offer 面试题45:圆圈中最后剩下的数字(约瑟夫环问题) 原书题目:0, 1, - , n-1 这n个数字排成一个圈圈,从数字0开始每次从圆圏里删除第m个数字.求出这个圈圈里剩下的最后一个数字 ...

  9. 剑指Offer:面试题15——链表中倒数第k个结点(java实现)

    问题描述 输入一个链表,输出该链表中倒数第k个结点.(尾结点是倒数第一个) 结点定义如下: public class ListNode { int val; ListNode next = null; ...

随机推荐

  1. 认识Session

    Session在不同环境下的不同含义 session,中文经常翻译为会话,其本来的含义是指有始有终的一系列动作/消息,比如打电话是从拿起电话拨号到挂断电话这中间的一系列过程可以称之为一个session ...

  2. 5.python之pip安装模块失败

    本文是篇水文,主要是在学习python过程中总是遇到使用pip安装一些模块失败,记录一下安装模块解决办法 第一种方法: 首先安装wheel模块: pip install wheel 如果wheel都安 ...

  3. HTML、CSS、JavaScript网页制作从入门到精通 (刘西杰) pdf扫描版彩色版​

    html.css.JavaScript网页制作从入门到精通中从基础知识开始讲起,如html的基本标记.文字与段落标记.表格标记.超链接标记……同时介绍了目前流行的web标准与css网页布局实例,以及基 ...

  4. 在普通的"类库"项目中添加 WPF 的 Window 对象

    最近开发一个 WPF 项目, 在此项目中有个类库工程, 在开发的过程中发现在类库工程中竟然添加不了 WPF 窗口对象和一些其他的 WPF 对象,在新建窗口中选 WPF 类型,只有一个 “用户控件(WP ...

  5. Android SDK下载和更新慢或失败的解决办法

    下载完Android SDK后发现无法更新,原因是我们被墙了,所以需要使用代理来更新,或者直接把dl-ssl.google.com解析的IP改一下就可以了 用文本编辑器打开文件C:\Windows\S ...

  6. Android学习笔记 TextSwitcher文本切换组件的使用

    activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&qu ...

  7. 类的互相包含------新标准c++程序设计

    #include<iostream> using namespace std; class A; class B{ public: void f(A* pt){}; } class A{ ...

  8. 拆半搜索binary_search

    //binary_search用于在有序的区间用拆半查找搜索等于某值得元素 #include<algorithm> #include<iostream> using names ...

  9. CSS中#和.的区别

    id:用来定义页面中大的样式,如栏目划分,顶部,正文,底部等:用#top的形式来定义: class:用来定义一些比较细节的样式,如具体的一个菜单,一行文字等,用.text的形式来定义. 定义HTML中 ...

  10. SpringBoot application.properties 配置项详解

    参考: http://blog.csdn.net/lpfsuperman/article/details/78287265### # spring boot application.propertie ...