快速排序
来源:互联网 发布:php超链接输出成文本 编辑:程序博客网 时间:2024/06/07 20:45
快速排序采用了一种分治的策略,该方法的基本思想是:
1.先从数列中取出一个数作为基准数。
2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。
3.再对左右区间重复第二步,直到各区间只有一个数。
代码如下:
// qsort.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <iostream>using namespace std;int partition1(int *a,int start,int last){ int i=start,j=last; int temp=a[start]; while(i<j) { while(i<j&&a[j]>=temp) j--; a[i]=a[j]; while(i<j&&a[i]<=temp) i++; a[j]=a[i]; } a[i]=temp; return i;}void qsort(int *a,int start,int last){ if(start<last){int middle=partition1(a,start,last);qsort(a,start,middle-1);qsort(a,middle+1,last);}}int main(){ int a[8]={1,32,52,19,81,8,19,32}; qsort(a,0,7); for(int i=0;i<8;i++) cout<<a[i]<<" "; cout<<endl; return 0;}
void QuickSort(int data[],int lo,int hi){ int pivot,l,r,temp; l = lo; r = hi; pivot=data[(lo+hi)/2]; //取中位值作为分界值 while(l<r) { while(data[l]<pivot) ++l; while(data[r]>pivot) --r; if(l>=r) break; temp = data[l]; data[l] = data[r]; data[r] = temp; ++l; --r; } if(l==r) l++; if(lo<r) QuickSort(data,lo,l-1); if(l<hi) QuickSort(data,r+1,hi); }
0 0
- 快速排序
- 快速排序
- 快速排序
- 快速排序!
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 自定义ViewGroup实现水平滑动
- 关于思考VirtualAlloc申请的内存属性的问题
- HTML5视频插件,各种已解决和正在解决的问题
- Redis+Keepalived高可用方案详细分析
- UVa 11991 - Easy Problem from Rujia Liu?
- 快速排序
- java static块异常对类加载的影响
- 降魔篇之springmvc项目开发
- libcurl link-time ssl backend (nss) is different from compile-time ssl backend (openssl)
- Let us learn C in Code <2>
- Centos下安装freesurfer、fsl、matlab
- 字典排序,运行怎么会崩溃的?
- cinder分布式搭建
- Minimum Path Sum