快速排序算法
来源:互联网 发布:4399赛尔号刷钻石软件 编辑:程序博客网 时间:2024/06/16 17:39
快速排序(Quicksort)是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
红色数字表示i和j所指数字
49 38 65 97 76 13 27
i j
49 38 65 97 76 13 27
i j swap(A[i] , A[j])
49 38 27 97 76 13 65
i j swap(A[i] , A[j])
49 38 27 13 76 97 65
i j
49 38 27 13 76 97 65
j i 结束不进行交换
49 38 27 13 76 97 65
j swap(49,A[j])
13 38 27 49 76 97 65
进行第一次交换后:13 38 27 49 76 97 65
进行第二次交换后:13 38 27 49 76 97 65
进行第三次交换后:13 27 38 49 76 97 65
进行第四次交换后:13 27 38 49 65 76 97
进行第五次交换后:13 27 38 49 65 76 97
#include <iostream>#include <utility>using namespace std;int get_middle(int array[], int start, int end){int value = array[start];//中轴int i = start+1;int j = end;while( i <= j ){while( array[i] < value )i++;while( array[j] > value )j--;if( i <= j ){swap( array[i], array[j] );i++,j--;}}swap( array[start], array[j] );for( i=0; i<7; i++ )cout << array[i] << " ";cout << endl;return j;}//递归实现快速排序void _quick_sort(int array[], int start, int end){int middle;if(start >= end)return;middle = get_middle(array, start, end);_quick_sort(array, start, middle -1);_quick_sort(array, middle + 1, end);}//判断数组合法性void quick_sort(int array[], int length){int median = 0;if(NULL == array || 0 == length)return;_quick_sort(array, 0, length -1);}int main(){int array[7] = {49,38,27,13,76,97,65};quick_sort( array, 7 );for( int i=0; i<7; i++ )cout << array[i] << " ";cout << endl;return 0;}
- 排序算法--快速排序
- 排序算法--快速排序
- 排序算法---快速排序
- 排序算法-快速排序
- 排序算法------快速排序
- 排序算法---快速排序
- 排序算法-快速排序
- 排序算法---快速排序
- 排序算法--快速排序
- 排序算法--快速排序
- 排序算法--快速排序
- 排序算法:快速排序
- 排序算法 快速排序
- 排序算法--快速排序
- 排序算法--快速排序
- 【排序算法】快速排序
- 排序算法--快速排序
- 排序算法:快速排序
- C# 类型universe无法解析程序集 解决方法
- c/c++ 对struct进行浅复制
- const static 和 static 成员的初始化
- 你想建设一个能承受500万PV/每天的网站吗?如果计算呢?
- 女程序员自我成就的三步曲
- 快速排序算法
- TCP连接管理
- Struts2、SpringMVC、Servlet(Jsp)性能对比 测试
- java中继承的理解
- stl(待完成)
- RFC 2068 Hypertext Transfer Protocol -- HTTP/1.1
- Erlang节点间ping失败原因分析
- HTML5 标签简介(一)
- Linux下RC4算法的多线程加解密