快速排序与归并排序
来源:互联网 发布:灰色关联分析软件 编辑:程序博客网 时间:2024/06/05 21:09
快速排序的基本思想是:
选中一个数作为基准,将待排序的数列分成两部分,从基准数开始,其左边的数都比该基准数小,其右边的数都比该基准数大,然后将左边和右边的数列同时进行递归排序,从而得到最终结果。
C++的代码实现如下:
<pre name="code" class="cpp"><pre name="code" class="cpp">#include <iostream>using namespace std; void quickSort(int[],int,int ); int partition(int[],int,int); int main(){ int n; cin>>n; int *a=new int[n]; int i; for(i=0;i<n;i++){ cin>>a[i]; } quickSort(a,0,n-1); for(i=0;i<n;i++){ cout<<a[i]<<endl; } return 0; } void quickSort(int a[],int left,int right){ int i; if(left<right){ i=partition(a,left,right); quickSort(a,left,i); quickSort(a,i+1,right); } }int partition(int a[],int left,int right){ int pivots=a [left]; while(left<right){ while(left<right&&a[right]>=pivots){ right--; } if(left<right){ a[left]=a[right]; left++; } while(left<right&&a[left]<=pivots){ left++; } if(left<right){ a[right]=a[left]; right--; } } a[left]=pivots; return left;}
归并排序:
归并排序的基本思想是假设一个序列的两个子序列已经排好序,只需要将这两个序列归并为一个序列就可以,是一种比较典型的递归排序方式。
c++代码实现如下:
#include <iostream>void merge(int[],int,int,int);void mergeSort(int[],int,int);int main(){ int n; cin>>n; int* a=new int[n]; int i; for(i=0;i<n;i++){ cin>>a[i]; } mergeSort(a,0,n-1); for(i=0;i<n;i++){ cout<<a[i]<<endl; } delete[] a; return 0;}void mergeSort(int a[],int left,int right){ if(left<right){ int middle=(left+right)/2; mergeSort(a,left,middle); mergeSort(a,middle+1,right); merge(a,left,middle,right); }}void merge(int a[],int left,int middle,int right){ int *c=new int[right-left+1]; int i=left; int j=middle+1; int k=0; while(i<=middle&&j<=right){ if(a[i]<=a[j]){ c[k]=a[i]; i++; k++; } else{ c[k]=a[j]; k++; j++; } } while(i<=middle){ c[k]=a[i]; k++; i++; } while(j<=right){ c[k]=a[j]; k++; j++; } for(int m=left,t=0;m<=right;m++,t++){ a[m]=c[t]; } delete[] c;}
0 0
- 快速排序与归并排序
- 快速排序与归并排序
- 快速排序与归并排序
- 归并排序与快速排序
- 归并排序与快速排序
- 归并排序与快速排序
- 归并排序与快速排序
- 快速排序、归并排序与选择排序
- 排序:快速排序与归并排序
- 快速排序与归并排序时间对比
- 关于快速排序与归并排序
- 快速排序&归并排序
- 快速排序,归并排序
- 快速排序、归并排序
- 快速排序&&归并排序
- 归并排序+快速排序
- 快速排序 归并排序
- 快速排序&归并排序
- 动态代理设计模式
- 2:ML(Machine Learning)是什么
- 长到40岁学到的41件事
- Android Studio 快捷键
- 快速排序递归及非递归实现
- 快速排序与归并排序
- java使用mysql数据库出现中文乱码解决
- 类方法isAssignableFrom、instanceof和asSubclass的区别及实例
- java 条件变量Condition——笔记
- SpringBoot 学习笔记 2
- ShellExecute使用详解
- 第四周项目2-用对象数组操作长方柱类
- 为什么某些壳脱壳后需要修复IAT?
- Ubantu安装xen4.4虚拟机