sort

通用分页查询存储过程

岁酱吖の 提交于 2020-03-09 05:49:06
1 2 3 -- 通用分页查询存储过程 4 -- exec p_PageRecordset_Table '#TempTable',20,1,100,0 5 -- ------------------------------------------------------------ 6 CREATE PROCEDURE p_PageRecordset_Table 7 ( 8 @TableName NVARCHAR ( 100 ), -- 全局临时表名称 9 @PageSize INT , -- 每页的记录条数 10 @PageNumber INT , -- 当前页面 11 @TotalSize INT , -- 总记录条数 12 @TotalPage INT OUTPUT -- 总页数 13 ) 14 AS 15 BEGIN 16 17 SET NOCOUNT ON 18 DECLARE @SqlText AS NVARCHAR ( 1000 ) 19 20 -- 计算总页数 21 IF @PageSize > 0 22 BEGIN 23 SET @TotalPage = @TotalSize / @PageSize 24 IF ( @PageSize * @TotalPage ) <> @TotalSize 25 SET @TotalPage = @TotalPage + 1

linux-ARM 中断子系统分析(2) -- linux系统中断子模块

一个人想着一个人 提交于 2020-03-08 20:27:29
引用: 魅族Linux Interrupt http://kernel.meizu.com/linux-interrupt.html 喔窝科技 中断子系统 http://www.wowotech.net/sort/irq_subsystem/page/2 ARM64 中断处理流程 https://www.byteisland.com/54/ 一. 软件时序图 来源: CSDN 作者: vertor11 链接: https://blog.csdn.net/vertor11/article/details/104735775

快速排序法-Quick Sort

余生长醉 提交于 2020-03-08 20:25:45
快速排序法-Quick Sort 【算法思想】 (1)在当前数组中选择一个数为基点,使它处于排好序的位置,并且这个数左边的数小于它,右边的数大于它。 (2)分别对这个基点左右两边的数进行相同操作。 【Partition】 (1)通常选取数组最左边的数作为分界点元素,这里我们标记为l,然后我们开始遍历剩余的数组,将其分为小于v的部分和大于v的部分,这两个部分的分界点我们用j来表示。当前访问的元素我们记为i。这样arr[l+1…j]<v,arr[j+1…i-1]>v。 (2)下面开始分两种情况去讨论当前元素i如何变化才能保证数组保持这种性质。如果当前元素是比v还要大的,即e>v,这个元素直接放在>v部分的后面即可,此时i++,继续考虑下一个元素即可。 如果当前元素小于v,则需要将j+1位置的元素和i位置的元素进行交换,j++,然后i++继续考虑下一个元素。 (3)最后,只需要将l位置的元素和j位置的元素交换位置即可。 【代码】 <quick_sort.cpp> # include <iostream> # include <algorithm> # include "MergeSort.h" # include "SortTestHelper.h" using namespace std ; //对arr[l...r]部分进行partition操作 //返回p,使得arr[l...p

案例7-1.2 插入排序还是归并排序 (25分)

我的梦境 提交于 2020-03-08 13:05:37
根据维基百科的定义: 插入排序是迭代算法,逐一获得输入数据,逐步产生有序的输出序列。每步迭代中,算法从输入序列中取出一元素,将之插入有序序列中正确的位置。如此迭代直到全部元素有序。 归并排序进行如下迭代操作:首先将原始序列看成 N 个只包含 1 个元素的有序子序列,然后每次迭代归并两个相邻的有序子序列,直到最后只剩下 1 个有序的序列。 现给定原始序列和由某排序算法产生的中间序列,请你判断该算法究竟是哪种排序算法? 输入格式: 输入在第一行给出正整数 N (≤100);随后一行给出原始序列的 N 个整数;最后一行给出由某排序算法产生的中间序列。这里假设排序的目标序列是升序。数字间以空格分隔。 输出格式: 首先在第 1 行中输出Insertion Sort表示插入排序、或Merge Sort表示归并排序;然后在第 2 行中输出用该排序算法再迭代一轮的结果序列。题目保证每组测试的结果是唯一的。数字间以空格分隔,且行首尾不得有多余空格。 输入样例 1: 10 3 1 2 8 7 5 9 4 6 0 1 2 3 7 8 5 9 4 6 0 输出样例 1: Insertion Sort 1 2 3 5 7 8 9 4 6 0 输入样例 2: 10 3 1 2 8 7 5 9 4 0 6 1 3 2 8 5 7 4 9 0 6 输出样例 2: Merge Sort 1 2 3 8 4 5 7

LeetCode 922. Sort Array By Parity II (按奇偶排序数组 II)

不打扰是莪最后的温柔 提交于 2020-03-08 06:34:48
题目标签:Sort   利用两个指针,在偶数位置上找到第一个奇数;在奇数位置上找到第一个偶数,然后互相转换数字。   具体看code。 Java Solution: Runtime: 2ms, faster than 99.61% Memory Usage: 42.9MB, less than 29.63 % 完成日期:03/06/2020 关键点:two pointers class Solution { public int[] sortArrayByParityII(int[] A) { int i = 0, j = 1, len = A.length; while(i < len && j < len) { // i starts from index 0, stops if found a odd while(i < len && A[i] % 2 == 0) { i += 2; } // j starts from index 1, stops if found a even while(j < len && A[j] % 2 == 1) { j += 2; } if(i < len && j < len) { swap(A, i, j); } } return A; } private void swap(int[] A, int i, int j) { int

148. Sort List

大城市里の小女人 提交于 2020-03-07 07:50:02
题目: Sort a linked list in O ( n log n ) time using constant space complexity. 链接: http://leetcode.com/problems/sort-list/ 题解: Sort List, 链表排序,一看到O(nlogn)就想到使用merge sort。 对于merge sort,还要研究一下bottom-up和top-down的区别,优劣点,如何继续优化等等,比如n较小时使用insertion sort, 了解Python的Tim-sort之类。也要研究一下链表的Quicksort,以及3-way Quicksort。 当时电面Amazon的时候写排序作死选择Quicksort,还尝试写了一个3-way Quicksort,由于理解不深同时当天也头昏脑胀没解释清楚,被面试官白大姐秒拒,如此浪费一年机会,甚是可惜。对于各种排序的stalability也要好好复习。熟能生巧,多练吧。另外,external sorting,B tree,A* tree,indexing,paging之类的也要复习。聊远了... 这题使用Merge Sort的话,还是按照Divide-and-Conquer分治。 两个辅助方法是findMid找中点,以及merge合并。 merge的话完全可以使用"Merge

八、shell学习笔记-合并与分割

流过昼夜 提交于 2020-03-07 00:32:32
1、sort的使用方法 sort命令将许多不同的域按不同的列顺序分类。 sort命令的一般格式为: sort -cmu -o output_file [ other options ] +pos1 +pos2 input_files -c 测试文件是否已经分类。 -m 合并两个分类文件。 -u 删除所有复制行。 -o 存储sort结果的输出文件名。 其他选项有: -b 使用域进行分类时,忽略第一个空格。 -n 指定分类是域上的数字分类。 -t 域分隔符;用非空格或tab键分隔域。 -r 对分类次序或比较求逆。 +n n为域号。使用此域号开始分类。 n n为域号。在分类比较时忽略此域,一般与 + n一起使用。 post1 传递到m,n。m为域号,n为开始分类字符数;例如4,6意即以第5域分类,从第7 个字符开始。 缺省情况下,sort认为一个空格或一系列空格为分隔符。要加入其他方式分隔,使用 - t选项。 sort执行时,先查看是否为域分隔设置了 - t选项,如果设置了,则使用它来将记录分隔成 域0、域1等等;如果未设置,用空格代替。缺省时 sort将整个行排序,指定域号的情况例外。 sort -t: -n filename.txt 按照空格和数字进行排序 sort -u filename.txt 去除重复项进行排序 sort -t: -k3 cc.txt 按照第三个域进行排序

js 排序:sort()方法、冒泡排序、二分法排序。

梦想的初衷 提交于 2020-03-06 21:43:00
js中的排序,这里介绍三种,sort()方法、冒泡排序、二分法排序。 1、sort方法 写法: 数组.sort(); 返回排好序的数组,如果数组里是数字,则由小到大,如果是字符串,就按照第一个字符的字符编码大小排序。 写法2: 数组.sort(function(a,b){ return a-b }); 表示从大到小,(如果写 retrun b-a 则由大到小排序); 不详细解释了。 2、冒泡排序。 原理是,直接将原理可能不好懂,我们还是按照下面的方法去讲吧,这样容易懂些。 //冒泡排序function quickSort(arr){ for(var i=0; i<arr.length-1; i++){ console.log(i); for(var j=0; j<arr.length-i-1; j++){ if(arr[j] > arr[j+1]){ var oldVal = arr[j]; arr[j] = arr[j+1]; arr[j+1] = oldVal; } } } } 我们假设要排序的数组是arr = [10, 8, 7, 6]; 原理: 这里arr长为3,外层循环三次,当外层for循环第一次循环的时候,即i=0的时候,进入里层循环,这时候将arr循环3次(4-0-1 = 3),即将arr的第一个数挨个于后面三个数比较,如果它大于后面的某个数,就与其交换位置

基础算法之快速排序Quick Sort

做~自己de王妃 提交于 2020-03-06 11:47:38
原理 快速排序(Quicksort)是对 冒泡排序 的一种改进。 从数列中挑出一个元素,称为" 基准 "(pivot); 排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在本次排序退出之后,该基准就处于数列的中间位置。这个称为 分区 (partition)操作; 递归 地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。 例子 将无序数组[3,6,4,2,5,1]进行快速排序 1) , 先把第一项[3]取出来作为基准 依次与其余项进行比较(3出列后大喝一声,比我小的站前边,比我大的站后边,行动吧!霸气侧漏~), 如果比[3]小就放[3]前边,2 1都比[3]小,全部放到[3]前边 如果比[3]大就放[3]后边,6 4 5比[3]大,全部放到[3]后边, 一趟排完后变成下边这样: 排序前:3,6,4,2,5,1 排序后:2,1,3,6,4,5 2) , 对前面一半[2,1]继续进行快速排序 重复步骤1)后变成下边这样: 排序前:2,1 排序后:1,2 前面一半排序完成,总的数组为: 排序前:2,1,3,6,4,5 排序后:1,2,3,6,4,5 3) ,对后面一半[6,4,5]继续进行快速排序 重复步骤1)后变成下边这样: 排序前:6,4,5 排序后:4,5,6 后面一半排序完成,总的数组为: 排序前

归并排序(MergeSort)

夙愿已清 提交于 2020-03-06 11:45:49
//版权所有 Anders06 于2007年10月25日 归并排序(Merge Sort)是利用"归并"技术来进行排序。归并是指将若干个已排序的子文件合并成一个有序的文件。 1、 基本思想 ( 1 ) 分治法的基本思想 分治法的基本思想是:将原问题分解为若干个规模更小但结构与原问题相似的子问题。递归地解这些子问题,然后将这些子问题的解组合为原问题的解。 ( 2 ) 归并排序的基本基本步骤 设两个有序的子文件(相当于输入堆)放在同一向量中相邻的位置上:R[low..m],R[m+1..high],先将它们合并到一个局部的暂存向量R1(相当于输出堆)中,待合并完成后将R1复制回R[low..high]中。 分解 : 讲n个元素分成n/2 个元素的子序列 解决 : 用合并并排序对两个子序列递归地排序 (在对子序列排序时,长度为1时递归结束) 合并 : 合并两个已经排好序的子列序以得到排序结果 以扑克牌为例, 假设有两堆牌面朝上地放在桌上,每一堆都是排好序的,最小的牌在最上面。我们希望将两堆牌合并成升序的一堆牌。基本步骤包括在面朝上的两堆牌中,选择顶上两张较小的一张,将其取出放入到输出堆,重复此动作,知道有一堆为空为止,然后吧另一堆所剩下的牌面朝下放入到输出堆即可。 合并排序的时间为 O(n). 2、 算法分析 ( 1 )时间复杂度 Merge过程运行的时间为O(n),