编程论到极致,核心非代码,即思想。所以,真正的编程高手同时是思想独到及富有智慧(注意与聪明区别)的人。每一个算法都是一种智慧的凝聚或萃取,值得我们学习从而提高自己,开拓思路,更重要的是转换思维角度。其实,我们大多数人都活在“默认状态”下。没有发觉自己的独特可设置选项-----思想。言归正传(呵呵!恢...
分类:
编程语言 时间:
2015-04-03 00:09:41
阅读次数:
232
一:计数排序
(1)当输入的元素是 n 个 0 到 k 之间的整数时,它的运行时间是 Θ(n + k)。计数排序不是比较排序,排序的速度快于任何比较排序算法。由于用来计数的数组C的长度取决于待排序数组中数据的范围(等于待排序数组的最大值与最小值的差加上1),这使得计数排序对于数据范围很大的数组,需要大量时间和内存。例如:计数排序是用来排序0到100之间的数字的最好的算法,但是它不适合按字母顺序排...
分类:
编程语言 时间:
2015-03-29 16:39:57
阅读次数:
212
基数排序思想完全不同于以前的排序算法,可以说,基数排序也叫做多关键字排序,基数排序是一种借助“多关键字排序”的思想来实现“单关键字排序”的内部排序算法。两种方式:1、最高位优先,先按照最高位排成若干子序列,再对子序列按照次高位排序2、最低位优先:不必分子序列,每次排序全体元素都参与,不比较,而是通过...
分类:
编程语言 时间:
2015-03-29 01:51:12
阅读次数:
156
选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法,冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。冒泡法:这是最原始,也是众所周知的最慢的算法了。他的名字的由来因为它的工作看来象是冒泡: 复杂度为O(n*n)。当数据为正序,将不会有交换。复杂度为O(0)。直接插入排序:O(n*n)选择...
分类:
编程语言 时间:
2015-03-28 11:32:22
阅读次数:
155
UVA - 10474
Where is the Marble?
Time Limit: 3000MS
Memory Limit: Unknown
64bit IO Format: %lld & %llu
Submit Status
Description
Raju and Meena love to play ...
分类:
编程语言 时间:
2015-03-21 09:53:59
阅读次数:
198
这几天一直在写排序算法,从插入,冒泡,选择到归并和快速再到计数和基数排序。今天来写下计数排序和基数排序吧。
计数排序:对于一组小于k的数组,进行排序。这里要保证输入的关键值在[0..k]之间。貌似很简单,我们先不管什么是计数排序CountSort(A,1,n),先来看一下一段代码。
CountPrint(int *A,int n,int k)代码:void CountPrint(int *A,i...
分类:
编程语言 时间:
2015-03-19 13:18:52
阅读次数:
150
排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。本文将依次介绍上述八大排序算法。算法一:插...
分类:
编程语言 时间:
2015-03-17 23:13:00
阅读次数:
215
后缀数组的两篇神论文:
国家集训队2004论文集 许智磊
算法合集之《后缀数组——处理字符串的有力工具》
很多人的模版都是用论文上的
包括kuangbin的模版:(DA算法)
模版中比较难理解的地方有两点1.按关键词排序 2.把字符串长度增加一位
按关键词排序的意思其实是基数排序中相当把两位数排序时先排个位,再排十位
这里也一样先排后2^k...
分类:
编程语言 时间:
2015-03-17 18:05:56
阅读次数:
185
目录简介交换排序冒泡排序快速排序插入排序直接插入排序希尔排序选择排序简单选择排序堆排序归并排序基数排序总结简介排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”的记录序列。分内部排序和外部排序。若整个排序过程不需要访问外存便能完成,则称此类排序问题为内部排序。反之,若参...
分类:
编程语言 时间:
2015-03-16 08:38:00
阅读次数:
264
基数排序是一种适用于特定数据类型的内部排序算法。这种排序算法要求数据必须能够划分为多个排序关键字,且这些排序关键字应该有优先级的区别。比如某个序列的数据都是整数,且取值范围在[0,99],则我们可以划分出...
分类:
编程语言 时间:
2015-03-15 16:59:22
阅读次数:
144