Sort a linked list in O(n log n) time using constant space complexity.分析:题目要求时间复杂度为O(nlogn),所以一开始想到的就是快速排序,但是快速排序一直AC不了,然后就想到用归并排序,没想到归并排序竟然可以。下面给出详细代码:归并排序需要做的
找到中间点
合并两个排好序的链表
递归实现归并排序
Code(c++):/**...
分类:
其他好文 时间:
2015-06-10 14:15:10
阅读次数:
102
算法:定义良好的计算过程,取一个或一组值作为输入,并产生出一个或一组值作为输出。即算法就是一系列的计算步骤,用来将输入数据转换成输出结果。 插入排序算法:对n个数据项进行排序的时间大约等于c1n^2,其中c1是一个不依赖于n的常量。即该算法所需的时间大致正比于n^2。 合并排序算法:排序n个...
分类:
其他好文 时间:
2015-06-10 11:57:53
阅读次数:
102
关于DataTable 里面用 /转义符拼接的问题//这种写法表面上是正确,实现上在运行时调用Select方法实行查询会报错 string str = resetstrWhere + "\"" + "," + "\"" + dataQuery.DefaultOrderByClause; table ...
分类:
编程语言 时间:
2015-06-09 11:41:36
阅读次数:
134
常见排序算法包括以下七种:选择排序、冒泡排序、插入排序、快速排序、希尔排序、堆排序、归并排序。
在学习具体算法实现并进行比较前,先来学习算法比较的几个维度。
一是稳定性
所谓稳定性,是指值相等的两个元素在排序前后是否会发生位置的交换。如果不会发生交换,则认为是稳定的算法;反之,则认为是不稳定的排序算法。
二是时间复杂度,指执行算法所需的时间长短。简单说就是算法执行的快慢程序。
三是空间复杂...
分类:
编程语言 时间:
2015-06-08 11:40:43
阅读次数:
240
Sort a linked list inO(nlogn) time using constant space complexity.链表排序,要求时间复杂度O(nlgn),我写的归并排序。/** * Definition for singly-linked list. * public class...
分类:
其他好文 时间:
2015-06-07 17:18:21
阅读次数:
131
自从打ACM以来也算是用归并排序了好久,现在就写一篇博客来介绍一下这个算法吧 :) 图片来自维基百科,显示了完整的归并排序过程。例如数组{38, 27, 43, 3, 9, 82, 10}.在算法导论讲分治算法一章的时候提到了归并排序。首先,归并排序是一个分治算法。归并(Merge)排序法是将两个....
分类:
编程语言 时间:
2015-06-07 14:32:30
阅读次数:
149
以前写过归并排序的算法,但是时间过了好久,忘记怎么写的了,(也是醉了)。正好复习算法的时候遇到这个问题,就重新写了一下,把遇到的一些问题顺便记录一下。核心就是用两个子数组记录分割后的两个数组中的变量, 然后依次比较大小即可。
这里有个细节需要注意一下,
arr_temp1[mid + 1 - low] = INT_MAX;
这段代码,用来设置一个哨兵, 用这种方法可以避免判断数组是否为空了具体...
分类:
编程语言 时间:
2015-06-06 16:37:41
阅读次数:
150
Posted on2013-09-18 09:00Stephen_Liu阅读(2205) 评论(6)编辑收藏 在标准流中,一个块级元素在水平方向会自动伸展,直到包含它的元素的边界;而在竖直方向和兄弟元素依次排列,不能并排。使用“浮动”方式后,块级元素的表现就会有所不同。 CSS中有一个flo...
分类:
Web程序 时间:
2015-06-06 00:21:11
阅读次数:
223
排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。
常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。
本文将依次介绍上述八大排序算法。
算法一:插入排序
插入排序示意图
插入排序是一种最简单直观的排序算法,...
分类:
编程语言 时间:
2015-06-05 12:28:08
阅读次数:
137