导言第一次了解到逆序数是在高等代数课程上。当时想计算一个数列的逆序数直觉就是用两重循环O(n^2)暴力求解。现在渐渐对归并算法有了一定的认识,因此决定自己用C++代码小试牛刀。逆序数简介由自然数1,2…,n组成的不重复的每一种有确定次序的排列,称为一个n级排列(简称为排列);或者一般的,n个互不同元...
分类:
其他好文 时间:
2015-06-11 00:08:07
阅读次数:
186
#include
using namespace std;void DealWhat(int ar[],int start,int end,int b[])
{
int mid = (start + end) / 2;
int i = start;
int j = mid+1;
int k = start;
//将start到en...
分类:
编程语言 时间:
2015-06-09 21:54:32
阅读次数:
151
Mergeksorted linked lists and return it as one sorted list. Analyze and describe its complexity.本题是多链表融合,可以选择利用归并算法思想,两两链表融合后再归并,也可以一起融合。本文是一起融合的想法,利用...
分类:
其他好文 时间:
2015-06-02 13:19:13
阅读次数:
106
归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。算法描述归并操作的过程如下:申请空间,使其...
分类:
编程语言 时间:
2015-05-13 18:39:52
阅读次数:
144
归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide
and Conquer)的一个非常典型的应用,时间复杂度最坏情形为O(NlogN)。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。(引自百度百科)
这个算法的基本操作是合并两个已排序的表。基本的合并算法是取两个输入数组A和B,一...
分类:
编程语言 时间:
2015-05-06 17:56:41
阅读次数:
170
1 //1~10000000之间所有7的倍数和末尾含7的数一共有多少个呢 2 public class test { 3 public static void main(String[] args) { 4 int[] i={1,2,3,4,5,6,7,17}; 5 ...
分类:
编程语言 时间:
2015-05-05 19:20:54
阅读次数:
161
归并排序(Merge sort)是创建在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。
归并操作
归并操作(merge),也叫归并算法,指的是将两个已经排序的序列合并成一个序列的操作。归并排序算法依赖归并操作。算法描述
归并操作的过程如下:申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列
设定两个指针,最初...
分类:
编程语言 时间:
2015-04-24 16:28:48
阅读次数:
141
一个归并排序卡了一天最后还是归并算法有问题,最初是为了把算法导论的伪代码转到c++而加了一些东西,其中在对左右数组的赋值那里出了问题。因为进行测试时不完全,就是只用书上的数组进行测试时,归并算法部分还好使,而归并排序不好使,一度以为是函数递归出了问题。现在看来,首先要看懂递归模型,然后算法的基础要....
分类:
编程语言 时间:
2015-04-21 17:26:08
阅读次数:
166
本题目是意思是把两个有序的链表合成一个有序的链表,考察了归并算法和链表的操作。
代码也相对比较简单,简单说一下归并函数里三个指针的作用,sum是返回的第一个指针,cur是所要返回的链表里走到的位置,put是对于取到的l1或l2里的某一个指针节点。全部的可运行代码如下:#include
#include
#include
struct ListNode{
int value;
ListNod...
分类:
其他好文 时间:
2015-04-16 17:36:38
阅读次数:
112