一. 算法描述 自顶向下的归并排序:采用分治法进行自顶向下的程序设计方式,分治法的核心思想就是分解、求解、合并。先将长度为N的无序序列分割平均分割为两段然后分别对前半段进行归并排序、后半段进行归并排序最后再将排序好的前半段和后半段归并 过程(2)中进行递归求解,最终下图详细的分解了自顶向下的合并.....
分类:
其他好文 时间:
2014-06-19 06:34:51
阅读次数:
126
POJ2299,题目链接http://poj.org/problem?id=2299题意:给出长度为n的序列,每次只能交换相邻的两个元素,问至少要交换几次才使得该序列为递增序列。思路:其实就是求逆序数,那么直接向到的就是冒泡了,交换一次,记录一次即可。但是n的范围达到50W,冒泡O(n^2)的复杂度...
分类:
其他好文 时间:
2014-06-18 23:21:12
阅读次数:
214
package com.rationalcoding.sort;import java.util.ArrayList;import java.util.Arrays;import java.util.concurrent.ExecutionException;import java.util.con...
分类:
编程语言 时间:
2014-06-18 20:33:45
阅读次数:
266
课程设计用归并排序出现了一些有趣的问题, 首先是B题, 配套的代码第41行S相当于临时空间, 1 #include 2 using namespace std; 3 #define MAXSIZE 1000001 4 typedef s...
分类:
其他好文 时间:
2014-06-18 19:59:04
阅读次数:
261
题意: 有一个k*k 的方阵,让你从当中每一行挑选一个数字相加最后能得到K^K次方的和,输出其中最小的k个。思路:先对每一行排序然后两两归并,每次取前k个再和下一行再进行归并。在归并的时候用一个优先队列维护最大的k个值每次先放k个进去然后一次每行和队顶比较,若是小则替换否则break最后输出即可。代...
分类:
其他好文 时间:
2014-06-18 17:46:28
阅读次数:
142
参看:数据结构与算法分析-c语言描述public class Main { public static void main(String[] args) { String[] a = { "a", "d", "e", "f", "m" }; String[] b =...
分类:
编程语言 时间:
2014-06-18 16:08:33
阅读次数:
211
题意:给定一个整数序列 问 只允许相邻的两个数交换 至少需要交换多少次思路:归并排序#include __int64 count;int array[500001],temp[500001]; void merge(int array[],int p,int q,int r) ///// p < ....
分类:
其他好文 时间:
2014-06-18 14:41:06
阅读次数:
197
package com.he.list;
public class Collections {
public static ArrayList mergeList(ArrayList l1, ArrayList l2) {
ArrayList l = new ArrayList();
int l1_length = l1.getLength();
int l2_length = ...
分类:
其他好文 时间:
2014-06-17 22:53:46
阅读次数:
247
题目
Merge k sorted
linked lists and return it as one sorted list. Analyze and describe its complexity.
方法
使用归并排序的思想,两两合并,直到最终变成一个。
public ListNode mergeKLists(ArrayList lists) {...
分类:
其他好文 时间:
2014-06-17 21:34:41
阅读次数:
183