排序算法之----快速排序算法

来源:互联网 发布:c语言打印所有梅花数 编辑:程序博客网 时间:2024/05/01 23:09
// 《剑指Offer——名企面试官精讲典型编程题》代码// 著作权所有者:何海涛#include "stdafx.h"#include <stdlib.h>#include "Array.h"#include <exception>// Random Partitionint 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;}

0 0
原创粉丝点击