分治算法—对数组排序
来源:互联网 发布:js控制input disabled 编辑:程序博客网 时间:2024/05/17 06:23
1.分治算法的基本思想是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同。求出子问题的解,就可得到原问题的解。
分治法解题的一般步骤:
(1)分解,将要解决的问题划分成若干规模较小的同类问题;
(2)求解,当子问题划分得足够小时,用较简单的方法解决;
(3)合并,按原问题的要求,将子问题的解逐层合并构成原问题的解。
分治法解题的一般步骤:
(1)分解,将要解决的问题划分成若干规模较小的同类问题;
(2)求解,当子问题划分得足够小时,用较简单的方法解决;
(3)合并,按原问题的要求,将子问题的解逐层合并构成原问题的解。
package algorithms;public class DivideAndConquer { public static void main(String args[]) { int[] num = {23, 27, 56 , 78, 99, 4, 24, 38, 55, 80}; System.out.println("未排序前:"); for (int a: num) System.out.print(a + " "); System.out.println(); mergesort(num, 0, 9); // merge(数组名,第一个数组第一个元素角标,第一个数组最后一个元素角标,第二个数组最后一个元素角标) System.out.println("未排序前:"); for (int a: num) System.out.print(a + " "); System.out.println(); } public static void merge(int[] A, int p, int q, int r) { int n1 = q - p + 1; int n2 = r - q; int []L = new int[n1]; int []R = new int[n2]; int i = 0; int j = 0; while (i != n1) { L[i] = A[p + i]; ++i; } while (j != n2) { R[j] = A[q + j + 1]; ++j; } i = j = 0; int k = p; while (i != n1 && j != n2) { if (L[i] <= R[j]) { A[k] = L[i]; ++i; } else { A[k] = R[j]; ++j; } ++k; } if (i == n1) while (j != n2) { A[k] = R[j]; ++k; ++j; } if (j == n2) while (i != n1) { A[k] = L[i]; ++k; ++i; } } public static void mergesort(int[] A, int p, int r) { if (p < r) { int q = (int)((p + r) / 2); mergesort(A, p, q); mergesort(A, q+1, r); merge(A, p, q, r); } }}
0 0
- 分治算法—对数组排序
- 分治算法之排序和逆序对
- 【算法】【分治】两个排序数组的中位数
- 分治算法—合并排序
- 数组中的逆序对——分治法(归并排序的应用)
- c++用分治法对随机数组归并排序
- 分治算法(归并排序、一维点对、HDU-1007)
- 分治算法实现对一个数进行字典全排序
- C++ 分治算法-归并排序与逆序对
- js算法:分治法-归并排序之合并有序数组
- 分治算法——快速排序
- 分治法算法——归并排序
- 分治算法——快速排序
- 分治算法-合并排序
- 分治算法-快速排序
- 分治算法--归并排序
- 分治算法----快速排序
- 分治算法-归并排序
- 访问者模式
- Effective C++学习笔记(一)
- cvWaitkey()和QImage关系
- JVM最简生存指南
- Ruby on rails 实战圣经:数据库迁移 - Migrations
- 分治算法—对数组排序
- Opencl how to choose work_group size
- Nginx学习笔记(十五):ngx_setproctitle()
- Hibernate实战_笔记18(基于注解的元数据)
- 通过widget来实现手机响铃模式的切换
- 带缓存I/O和不带缓存I/O概念
- 任意给出一个四位数, 把它重新组成一个四位的最大数和一个最小数, 算出两者间的差.
- File 类的应用
- Buffer I/O error on device mmcblk0p3, logical block .../end_request: I/O error, dev mmcblk0, sector