算法导论之随机化快速排序实现
来源:互联网 发布:php 自动实例化类 编辑:程序博客网 时间:2024/05/17 23:48
//快速排序是一种最坏情况时间复杂度为O(n^2)的排序算法。虽然最坏情况时间复杂度很差,但是快速排序通常是//实际排序应用中最好的选择。因为它的平均性能非常好。它的期望时间复杂度是O(nlgn),而且O(nlgn)中隐含的//常数因子非常小,另外,它还能进行原址排序。当输入数组完全有序时,快速排序的时间复杂度让然为O(nlgn)//快速排序的平均运行时间更接近于其最好情况。#include <iostream>using namespace std;void RandomizedQuickSort(int A[], int p, int r);int RandomizedPartition(int A[], int p, int r);int Partition(int A[], int p, int r);void RandomizedQuickSort(int A[], int p, int r){int q;if (p < r){q = RandomizedPartition(A, p, r);RandomizedQuickSort(A, p, q-1);RandomizedQuickSort(A, q + 1, r);}}int RandomizedPartition(int A[], int p, int r){int i = rand() % (r - p + 1) + p;swap(A[i], A[r]);return Partition(A, p, r);}int Partition(int A[], int p, int r){int x = A[r];int i = p - 1;for (int j = p; j < r; j++){if (A[j] <= x){i++;swap(A[j], A[i]);}}swap(A[r], A[i + 1]);return i + 1;}int main(){int arr[] = { 20,40,90,50,10,80,80,70,60,100 };RandomizedQuickSort(arr, 0, 9);for (int i = 0; i < 10; i++){cout << arr[i] << ",";}cout << endl;system("pause");return 0;}10,20,40,50,60,70,80,80,90,100,
请按任意键继续. . .
阅读全文
0 0
- 算法导论之随机化快速排序实现
- 【算法导论】c++实现的随机化的快速排序
- 算法导论:快速排序及其随机化版本
- 算法导论-第七章-快速排序:随机化快速排序C++实现
- 算法导论第二版笔记之快速排序与随机化快速排序
- 算法导论上的quicksort实现 快速排序的随机化版本
- 快速排序之算法导论实现
- 算法导论(一):快速排序与随机化快排
- 【算法】随机化快速排序【JS实现】
- 随机化快速排序算法
- 随机化快速排序算法
- 快速排序之随机化
- 【算法导论】快速排序实现
- 算法导论快速排序实现
- 算法导论之快速排序
- 算法导论之快速排序
- 快速排序和随机化快速排序(算法导论第七章)
- 排序算法之快速排序的随机化版本
- list排序问题解决
- 论文实践学习
- Linux 文件I/O
- 编译选项:MIPS Options
- Python Docs 笔记
- 算法导论之随机化快速排序实现
- Unix下去掉^M的方法
- photoshop图像滤镜——素描算法
- 蛇形填数
- Python打造漏洞扫描器 8
- 锤子剪刀布
- J2EE系列之Hibernate4学习笔记(十九)--hibernate高级配置(配置hibernate二级缓存)
- USB驱动安装与卸载
- 自定义CLOB字段连接函数处理Oracle查询