深度分页 深度分页是指给搜索结果指定一个很大的起始位移。 普通分页在给定一个大的起始位移时效率十分低下,例如start=1000000,rows=10的查询,搜索引擎需要找到前1000010条记录然后再返回最后10条。Solr为了最后10条记录只会检索排序字段,但是前1000010条记录的内部排序开 ...
                            
                            
                                分类:
其他好文   时间:
2018-08-21 13:56:54   
                                阅读次数:
287
                             
                    
                        
                            
                            
                                一、直接插入排序(内部排序、O(n2)、稳定) 原理:从待排序的数中选出一个来,插入到前面的合适位置。 二、选择排序(O(n2)、不稳定) 与直接插入排序正好相反,选择排序是从待排序的数中选出最小的放在已经排好的后面,这个算法选数耗时。 三、快速排序(O(nlogn)、不稳定) 快速排序简称快排,是 ...
                            
                            
                                分类:
编程语言   时间:
2018-08-17 00:43:27   
                                阅读次数:
176
                             
                    
                        
                            
                            
                                    1 arr = [1,23,12,9,8,8,9,1,1,8,] 2 def quickSortCore(arr,start,end): 3 if start < end: 4 index = partition(arr,start,end) 5 quickSortCore(arr,start,in ...
                            
                            
                                分类:
编程语言   时间:
2018-08-10 01:09:57   
                                阅读次数:
176
                             
                    
                        
                            
                            
                                    单机版外部排序 ArraySource 支持分块 创建一个用于排序的源头,通过可变参数...传入设置的值,返回的时候注意要close(out) InMemSort 创建一个内部排序函数,从内存中获取并利用sort.Ints(a)来排序。 使用: Merge 针对多个源进行排序,与上面区别是输入源多了 ...
                            
                            
                                分类:
编程语言   时间:
2018-08-07 12:51:30   
                                阅读次数:
125
                             
                    
                        
                            
                            
                                    目录 冒泡排序 鸡尾酒排序 选择排序 插入排序 二分插入排序 希尔排序 归并排序 堆排序 快速排序 鸡尾酒排序 二分插入排序 希尔排序 我们通常所说的排序算法往往指的是内部排序算法,即数据记录在内存中进行排序。 排序算法大体可分为两种: 一种是比较排序,时间复杂度O(nlogn) ~ O(n^2), ...
                            
                            
                                分类:
编程语言   时间:
2018-08-04 14:37:09   
                                阅读次数:
197
                             
                    
                        
                            
                            
                                文字描述 基数排序是和前面各类排序方法完全不相同,前面几篇文章介绍的排序算法的实现主要是通过关键字间的比较和移动记录这两种操作,而实现基数排序不需要进行记录关键字间的比较。基数排序是一种借助多关键字排序的思想对单逻辑关键字进行排序的方法。先介绍下什么是多关键字排序,以引入链式基数排序算法。 先介绍什 ...
                            
                            
                                分类:
编程语言   时间:
2018-07-31 21:57:13   
                                阅读次数:
172
                             
                    
                        
                            
                            
                                    排序算法的相关概念 1、内部排序和外部排序 内部排序:整个排序过程完全在内存中进行; 外部排序:排序需要借助外部存储设备才能完成。 2、算法的稳定性 相同关键字的领先关系在排序过程中不发生变活,则所用的排序方法是稳定的。 算法思想 从上往下扫描整个待排序数组,若相邻的两个数逆序,则交换位置(让较大的 ...
                            
                            
                                分类:
编程语言   时间:
2018-07-30 15:39:04   
                                阅读次数:
166
                             
                    
                        
                            
                            
                                文字描述 堆排序中,待排序数据同样可以用完全二叉树表示, 完全二叉树的所有非终端结点的值均不大于(或小于)其左、右孩子结点的值。由此,若序列{k1, k2, …, kn}是堆,则堆顶元素(或完全二叉树的根)必为序列中n个元素的最小值(或最大值)。 若在输出堆顶的最小值之后,使得剩余n-1个元素的序列 ...
                            
                            
                                分类:
编程语言   时间:
2018-07-27 20:57:19   
                                阅读次数:
171
                             
                    
                        
                            
                            
                                文字描述 树形选择排序又称锦标赛排序; 比如,在8个运动员中决出前3名至多需要11场比赛, 而不是7+6+5=18场比赛(它的前提是甲胜乙,乙胜丙,则甲必能胜丙) 首先对n个记录的关键字进行两两比较,然后在(n/2)个较小者之间再进行两两比较,直至选出最小关键字的记录为止,这个过程可用一颗有n个叶子 ...
                            
                            
                                分类:
编程语言   时间:
2018-07-26 21:12:31   
                                阅读次数:
228
                             
                    
                        
                            
                            
                                文字描述 快速排序是对起泡排序的一种改进。它的基本思想是,通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。 一趟快速排序描述:假设待排序的序列为{L.r[s], L.r[s+1], … , L.r[ ...
                            
                            
                                分类:
编程语言   时间:
2018-07-25 20:13:00   
                                阅读次数:
143