算法导论第四章-快速排序
来源:互联网 发布:iscroll.js中文官网 编辑:程序博客网 时间:2024/06/03 09:26
//快速排序复杂度为O(nlogn),平均复杂度也是O(nlogn),所以就平均时间而言,被认为是最好的一种排序方法#include<iostream>using namespace std;//以a[low]为枢轴,小于它的都放到a[low]前面,大于它的都放到后面,则low的位置即确定int quick_sort(int *a,int low,int high){int tmp=a[low];int i=low;int j=high;while(i<j){//从后开始遍历,直到找到比枢轴小的while(i<j&&a[j]>=tmp)j--;//找到之后把它放到前面if(i<j){a[i]=a[j];i++;}//再从i开始向后遍历,直到找到比枢轴大的while(i<j&&a[i]<=tmp)i++;//找到之后把发放到j处if(i<j){a[j]=a[i];j--;}}//确定i的位置a[i]=tmp;return i;}//递归排序void sort(int *a,int low,int high){if(low<high){int i=quick_sort(a,low,high);sort(a,low,i);sort(a,i+1,high);}}int main(){int a[ ]={2,1,3,4,7,5,8,6,0,9};int length=sizeof(a)/sizeof(*a);cout<<"原数组为: ";for(int i=0;i<length;i++)cout<<a[i]<<" ";cout<<endl;sort(a,0,length-1);cout<<"快速排序后的数组为:";for(int i=0;i<length;i++)cout<<a[i]<<" ";cout<<endl;return 0;}
算法导论书上的方法:
#include <iostream>#include <vector>using namespace std;//注意begin和end 为下标,以第一个数begin为枢轴void quick_sort(vector<int> &data , int begin , int end){if(data.empty() || begin >= end)return ;int j = begin ;for(int i = begin + 1; i <= end ; i++){if(data[i] < data[begin]){ j++;swap(data[i] , data[j]);}}swap(data[j] , data[begin]);quick_sort(data , begin , j - 1);quick_sort(data , j + 1 , end);}int main(){int num[] = {2,4,1,6,8,3,0,5};int len = sizeof(num) / sizeof(*num);vector<int> data(num , num + len);//注意data的初始化方式quick_sort(data , 0 , len - 1);for(int i = 0 ; i < len ; i++){cout<<data[i]<<" ";}cout<<endl;}
0 0
- 算法导论第四章-快速排序
- 算法导论——第四章——快速排序
- MIT算法导论-第四讲-快速排序
- MIT算法导论第四节笔记——快速排序
- 算法导论-快速排序
- 【算法导论】快速排序
- 算法导论-----快速排序
- 【算法导论】快速排序
- 算法导论:快速排序
- 快速排序--【算法导论】
- [算法导论]快速排序
- [算法导论]快速排序
- 算法导论------快速排序
- 【算法导论】快速排序
- 算法导论---快速排序
- 【算法导论】快速排序
- 快速排序 算法导论
- 算法导论--快速排序
- 类与类之间的关系--泛化,关联,依赖,实现
- TRIZ系列-创新原理-31-多孔材料原理
- uboot与kernel的flash分区
- UVA - 531 Compromise
- 稀疏矩阵的加法、减法、转置运算
- 算法导论第四章-快速排序
- 问答社区界面ajax无显示问题
- 织梦dedecms制作中英文等多语言企业网站图文教程
- 第9周项目5(2)
- leetcode - Search in Rotated Sorted Array
- The app references non-public selectors in payload With Xcode6.1
- 【转】【Coursera公开课】职场素养 笔记
- Ubuntu下libvirt kvm配置
- 直接执行SQL查询