分治算法——快速排序,归并排序
来源:互联网 发布:java 生成6位随机数 编辑:程序博客网 时间:2024/04/29 18:26
http://blog.163.com/hadyk1111@126/blog/static/29599406200752345233993/
快速排序 http://blog.csdn.net/morewindows/article/details/6684558 分析:数据结构p186.重要 当源文件有序时复杂度是o(n2).此时冒泡排序最好,无序时快速排序是最好的方法。 void QuickSort(int *a,int l,int r) { if (r<=l) { return; } int i=l; int j=r; int x=a[i];//a[l]即a[i]就是第一个坑 //挖坑填数 while (j>i) { // 从右向左找小于x的数来填a[i] while (a[j]>=x&&j>i) { j--; } if (j>i) { a[i]=a[j];//a[j]填到a[i]中,a[j]就形成了一个新的坑 i++; } // 从左向右找大于或等于x的数来填a[j] while (a[i]<x&&j>i) { i++; } if (j>i) { a[j]=a[i];//将a[i]填到a[j]中,a[i]就形成了一个新的坑 j--; } } //退出时,i等于j。将x填到这个坑中。 a[i]=x; //分治法 QuickSort(a,l,i-1); QuickSort(a,i+1,r); }
归并排序 http://blog.csdn.net/morewindows/article/details/6678165 //将有二个有序数列a[first...mid]和a[mid...last]合并。 void mergearray(int a[], int first, int mid, int last, int temp[]) { int i=first; int n=mid; int j=mid+1; int m=last; int k=0; while (i<=n&&j<=m) { //比较二个数列的第一个数,谁小就先取谁,取了后就在对应数列中删除这个数 if (a[i]<a[j]) { temp[k++]=a[i++]; } else { temp[k++]=a[j++]; } } //有数列为空,那直接将另一个数列的数据依次取出即可 while (i<=n) { temp[k++]=a[i++]; } while (j<=m) { temp[k++]=a[j++]; } for (i=0;i<k;i++) { a[first+i]=temp[i]; } } void mergesort(int a[], int first, int last, int temp[]) { if (first < last) { int mid = (first + last) / 2; mergesort(a, first, mid, temp); //左边有序 mergesort(a, mid + 1, last, temp); //右边有序 mergearray(a, first, mid, last, temp); //再将二个有序数列合并 } }
0 0
- 分治算法——快速排序,归并排序
- 分治算法——归并排序与快速排序
- 【算法】分治法(快速排序,归并排序)
- 实用算法的分析与程序设计——分治算法(归并排序,快速排序)
- 分治算法——快速排序、归并排序算法(Java实现)
- 分治法算法——归并排序
- Python 数据结构与算法 —— 从分治的角度看快速排序、归并排序
- 分治算法--归并排序
- 分治算法-归并排序
- 分治算法-归并排序
- 算法--分治归并排序
- 归并排序-分治算法
- 分治算法---归并排序
- 【分治算法】归并排序,快速排序和汉诺塔
- 分治归并——排序
- 分治——归并排序
- 分治法—归并排序
- 分治策略—归并排序
- 系统调用跟我学(2)
- Java多线程同步的一层对象/二层对象/三层对象写法对比
- 黑马程序员——C语言数组
- nyoj255 C小加之随机数
- 【HDU】5020 Revenge of Collinearity 极角排序
- 分治算法——快速排序,归并排序
- CButton类的Create函数用法
- 算法之浅谈递归与分治
- go array和slice区别
- OpenCV图像处理篇之腐蚀与膨胀
- 2014百度校招开发测试工程师笔试题(时间_2013-9-28__地点_深圳__职位_开发测试工程师)
- PID277 / 整数拆分 (递归)
- java动态代理
- VS2012下配置Opencv 3.0.0 新方法