快速排序算法分析
来源:互联网 发布:电视直播网站php源码 编辑:程序博客网 时间:2024/06/06 08:33
// 快速排序算法#include <stdio.h>#include <stdlib.h>void quicksort(int *arr, int nLeft, int nRight){ int i =0, j = 0; if (nLeft >= nRight) { return; } i = nLeft; j = nRight; int nMid = (nLeft + nRight) / 2; int nMidVal = arr[nMid]; while (i < j) { // From left move to right while ((arr[i] < nMidVal) && (i < j)) { i++; } // From right move to left while ((arr[j] > nMidVal) && (i < j)) { j--; } if (i < j) { arr[i] = arr[i]^arr[j]; arr[j] = arr[i]^arr[j]; arr[i] = arr[i]^arr[j]; } } nMid = j; quicksort(arr, nLeft, nMid); quicksort(arr, nMid+1, nRight);}int main(){ int arrTest[]={2,5,7,4,1,3,9,0,8,6}; int i = 0; char c; for (i = 0; i < 10; i++) { printf("%d ", arrTest[i]); } printf("\n\n"); quicksort(arrTest, 0, 9); for (i = 0; i < 10; i++) { printf("%d ", arrTest[i]); } printf("\n\n"); scanf("%c", c); return 0;}
算法分析:
时间复杂度
最好情况(每次总是选到中间值作枢轴)T(n)=O(nlogn)
最坏情况(每次总是选到最小或最大元素作枢轴)
做n-1趟,每趟比较n-i次,总的比较次数最大:[O(n2)] 退化为冒泡排序
平均时间复杂度为::T(n)=O(nlogn)
- 快速排序算法分析
- 快速排序算法分析
- 快速排序算法分析
- 算法分析:快速排序
- 快速排序算法分析
- 快速排序算法分析
- 快速排序算法分析
- 算法分析-快速排序
- 算法分析之快速排序
- 快速排序(递归算法)分析
- 快速排序算法sort分析
- 快速排序算法sort分析
- 算法分析(一): 快速排序
- 快速排序算法 随机化分析
- 算法-排序-快速排序(QuickSort)分析
- 快速排序 与 随机快速排序 算法分析
- 快速排序算法的深入分析
- C语言快速排序算法代码分析
- 常用机制设计[uncompleted]
- 中国菜刀 及使用方法
- Schema例子详解
- 系统中的用户权限设计
- OSGi架构学习与设计
- 快速排序算法分析
- 既然与C++有缘····
- 中国菜刀使用帮助
- gcc and g++的区别
- 一些牢骚
- bupt
- logging in python: logging模块的简单使用
- Python的标准logging模块(1)
- 在Ubuntu下安装、配置和测试cuda