// 《剑指Offer——名企面试官精讲典型编程题》代码
// 著作权所有者:何海涛
#include "stdafx.h"
#include <stdlib.h>
#include "Array.h"
#include <exception>
// Random Partition
int RandomInRange(int min, int max)
{
int random = rand() % (max - min + 1) + min;// min ~ max
return random;
}
void Swap(int* num1, int* num2)
{
int temp = *num1;
*num1 = *num2;
*num2 = temp;
}
int Partition(int data[], int length, int start, int end)
{
if(data == NULL || length <= 0 || start < 0 || end >= length)
throw new std::exception("Invalid Parameters");
int index = RandomInRange(start, end);
Swap(&data[index], &data[end]);
int small = start - 1;
for(index = start; index < end; ++ index)
{
if(data[index] < data[end])
{
++ small;
if(small != index)
Swap(&data[index], &data[small]);
}
}
++ small;
Swap(&data[small], &data[end]);
return small;
}
排序算法之----快速排序算法
转载![](https://ucenter.51cto.com/images/noavatar_middle.gif)
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
【C】排序算法
文章介绍了几种常用的排序,包括其实现思路与具体代码实现。
排序 算法 代码分析 -
排序算法之计数排序的优化
排序算法之计数排序的优化
数组 计数排序 最小值 -
排序算法之——快速排序分析
引言本篇的主题是快速排序,它可能是应用最广泛的算法了。它的平均运行时间是O(NlogN)O(NlogN)O(NlogN),最坏情形性能为O
图解快速排序 快速排序分析 快速排序Java实现 选择问题 第k小元素 -
【算法】常用算法之快速排序算法
快速排序算法执行流程: 1.找到当前数列的中间元素,将它作为基准值,并且保存起来. 2.分别使用基
快速排序 算法 快速排序算法 递归 i++ -
《算法之美》---快速排序(随机快速排序)
快速排序是对冒泡排序的一种改进,它使用分治的思想,通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字种方式选取一个元素作为划
算法 exchange null n2 快速排序 -
C++排序算法之快速排序
C++排序算法之快速排序!
算法 c++ 快速排序 i++ 递归 -
排序算法~快速排序
学习二分
数组 临界值 快速排序