例题 2.8 快速排序
来源:互联网 发布:excel的数据库管理功能 编辑:程序博客网 时间:2024/06/09 20:23
tip:刚开始吧x=a[p];
避免了while(a[--j]>x);可能导致的数组越界,sorry...。
和Mark Allen Weiss 的Data structure and algorithm analysis 的主要区别在于pivot的选择;自我感觉算法书上不如weiss的方法巧妙。
贴代码(未随机选择pivot的代码):
#include<iostream>using namespace std;const int MAX=5;/*void swap(int &m,int &n){int tmp=m;m=n;n=tmp;}*/int partition(int a[],int p,int r){int i=p,j=r+1;int x=a[p];while(1){while(a[++i]<x&&i<r);while(a[--j]>x);//while(a[--j]>x&&j>p);if(i>=j)break;swap(a[i],a[j]);}swap(a[p],a[j]);return j;}void QuickSort(int a[],int p,int r){if(p<r){int q=partition(a,p,r);QuickSort(a,p,q-1);QuickSort(a,q+1,r);}}int main(){int a[MAX];cout<<"请输入"<<MAX<<"个元素: "<<endl; for(int i=0;i<MAX;i++)cin>>a[i];QuickSort(a,0,MAX-1);cout<<"排好序的数组:"<<endl;for(auto s:a)cout<<s<<endl;return 0; }
0 0
- 例题 2.8 快速排序
- 【排序】例题:小哼买书(桶排序、冒泡排序、快速排序)
- 经典例题——快速排序
- 算法导论第七章例题——快速排序
- 快速排序 小讲 - (一)【 理解 + 例题 】
- 快速排序 小讲 - (二)【 理解 + 例题 】 更新 ing...
- 063day(快速排序和分治例题)
- 快速幂取模 例题uva10006
- 例题 2.7归并排序
- 【典型例题】TreeSet排序
- 例题:二分法排序
- 经典排序例题
- 插入排序例题
- 2.8 快速排序
- 矩阵快速幂 例题+模板
- 快速幂+快速幂经典例题
- 例题1.17 年龄排序 UVa11462
- qsort函数应用排序例题
- caffe自带的两个例程
- 快速排序的两种实现
- js点击关闭当前浏览器Scripts may close only the windows that were opened by it.
- Python 箴言
- Java加密算法---MD5
- 例题 2.8 快速排序
- could not start running tests with command 'pybot.bat'
- python 中的map,imap,startmap
- <sdut-ACM>顺序表应用2:多余元素删除之建表算法
- Python的ORM框架SQLAlchemy使用入门(二)【连接MySql数据库】
- 多线程编程-互斥锁
- 04:字符串分割 substr()
- Android PhotoView :一款扩展自ImageView 支持通过单点/多点触摸来进行图片缩放的智能控件。
- 常见的Hash算法