首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

关于文本排序的那些事

这里讨论的文本排序不是一个排序算法,而是作为某个排序算法的底层依赖,常常在多语言环境下需要考虑,比如说中文的排序,日文的排序。...本文讨论的文本排序就属于本地化范畴。 一个系统要做到全球化,需要仔细考虑文本排序,因为文本排序可能会影响到系统的架构。...之前就遇到过一个关于文本排序的问题,问题的原型是: 有一个电商平台,商家可以在平台上开店,在商家的后台产品管理界面,商家看到的产品列表默认以名字排序。...编程语言的支持 对于文本排序,各个开发语言也都有很好的支持。...文本搜索:字典树,Trie,按照字典排序。具体可以阅读:看动画轻松理解「Trie树」。

1.8K20
您找到你想要的搜索结果了吗?
是的
没有找到

一个命令帮你对文本排序

前言 在Linux下,有时候需要对文本内容进行排序,例如按照字典顺序排序,按照数字排序或者按照特定列排序等等。今天我们就借助一个命令-sort来满足我们对文本排序的需求。...按照字典顺序排序 假如有文本内容test1.txt如下(偷偷问一句:你在使用哪个linux发行版?)...: Debian Gentoo Gentoo CentOS Fedora ubuntu Kali redhat Arch OpenSuse 现在要对文本内容按照字典升序排序,只需使用下面的命令即可:...例如: sort -c test1.txt #打印结果,并告知无序开始的行数 sort -C test1.txt #不打印结果,但是命令的返回结果为1 合并已排序文本 可以使用-m选项来合并已经排好序的文本...例如: sort -m file1 file2 总结 以上就是使用sort命令对文本进行排序的常见使用方法,更多内容可使用man命令进行查看。

81920

Linux Shell工具篇 - 文本排序工具sort

介绍 sort命令在Linux里非常有用,它将文本文件内容进行排序,并将排序结果标准输出或重定向输出到指定文件。...语法 1 sort (options) 参数 选项 说明 -n number,依照数值的大小排序 -r reverse, 以相反的顺序来排序 -t 分隔字符 设置排序时所用的分隔字符, 默认空格是分隔符...-k 指定需要排序的列 -d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符 -f 排序时,将小写字母视为大写字母 -b 忽略每行前面开始出的空格字符 -o 输出文件 将排序后的结果存入指定的文件...-u 意味着是唯一的(unique),输出的结果是去完重了的 -m 将几个排序好的文件进行合并 参数:指定待排序文本文件 演示 数据文件准备:sort.txt 1234567 张三 30 李四...数字升序去重 先按照“空格分割,然后按照第2列数字升序排序,最后对所有列去重: 1 sort -t " " -k2n,2 -uk1,2 sort.txt 运行效果 注意: 先排序再去重 3.数字升序去重结果保存到文件

2.1K40

Excel公式技巧39: COUNTIF函数在文本排序中的应用

当我们知道这些顺序后,就可以使用VLOOKUP函数来查找对应的单元格中的值,从而实现按顺序对这些单元格中的值排序。 简单地说,使用COUNTIF函数,我们可以对单元格区域中的文本排序。...如下图1所示,在单元格B6中,使用公式: =COUNTIF(C6:C15,"<="&C6) 得到单元格C6中的<em>文本</em>在单元格区域C6:C15的<em>文本</em>中,由小到大排在第10位。...将公式下拉至单元格B15,得到相应的列C中<em>文本</em>在单元格区域C6:C15中<em>文本</em>的<em>排序</em>位置。 ?...()-ROW(E5),B6:C15,2,FALSE) 其中,ROW()-ROW(E5)的值为1,即查找单元格区域B6:C15中列B中的值为1对应的列C中单元格的值,也就是单元格区域C6:C15中最小的<em>文本</em>...将该公式向下拉至单元格E15,得到<em>排序</em>好的<em>文本</em>。当将公式向下拉时,随着行的变化,ROW()-ROW(E5)的值也不断变化,从而取得相应的值。

5.9K20

常见排序算法-冒泡排序、选择排序 、插入排序 、快速排序、 归并排序 、堆排序

‍个人主页: 才疏学浅的木子 ‍♂️ 本人也在学习阶段如若发现问题,请告知非常感谢 ‍♂️ 本文来自专栏: 算法 算法类型:排序算法 排序算法 冒泡排序 冒泡排序的优化 选择排序 插入排序...快速排序 归并排序排序 冒泡排序 平均时间复杂度: o(n^2) 最好时间: o(n) 最坏时间: o(n^2) 空间复杂度: o(1) 是否稳定: 稳定 简单的冒泡排序...[3,2,1,4,5,6] 如果按照普通冒泡排序下次需要遍历的下标范围为[0,4] 但是[3,4]是已经有序的,所以可以减少比较,保存上次交换的结束位置 public int[] bubbleSort...平均时间复杂度: o(n^2) 最好时间: o(n) 最坏时间: o(n^2) 空间复杂度: o(1) 是否稳定: 稳定 插入排序 public int[] insertSort...平均时间复杂度: o(nlogn) 最好时间: o(nlogn) 最坏时间: o(n^2) 空间复杂度: o(logn) 是否稳定: 不稳定 快速排序 public void

86150

基本排序算法(冒泡排序 选择排序 插入排序 快速排序 归并排序 基数排序 希尔排序

项目地址:https://github.com/windwant/windwant-service/tree/master/algorithm 冒泡排序:两两比较,大数冒泡 升序: public static...选择排序:选择剩余元素中最小(最大)的元素放置到初始选择集合中(空) public static void SelectionSortAsc(int[] arr){ int min = 0;...:设定一个初始已排序的集合(一般选择一个元素),从剩余的集合中将各个元素以此插入到初始集合中的正确位置 public static void insertionSort(int [] array){...左边的元素值都小于anchor值,右边的值都大于anchor值,递归排序左右两侧排序 //左边元素。...值索引+1---high if (end < high) { quikeSort(arr, end + 1, high); } } 归并排序

68620

①归并排序、快速排序 、堆排序、计数排序

] ①归并排序、快速排序 、堆排序、计数排序 归并排序 ⚪步骤 ⚪实现 ⚪复杂度 快速排序 ⚪步骤 ⚪实现 ⚪复杂度 堆排序 ⚪步骤 ⚪实现 ⚪复杂度 912....排序数组 315. 计算右侧小于当前元素的个数 561. 数组拆分 1122. 数组的相对排序(计数排序) 268. 丢失的数字(计数排序) 215. 数组中的第K个最大元素 347....交易逆序对的总数 ①归并排序、快速排序 、堆排序、计数排序 归并排序 ⚪步骤 归并排序: 归并排序是一种分治法(Divide and Conquer)的经典排序算法,它的基本思想是将原始数组划分成较小的数组...快速排序 ⚪步骤 快速排序: 快速排序(Quick Sort)是一种常用的基于分治思想的排序算法。...堆排序 ⚪步骤 堆排序: 堆排序(Heap Sort)是一种基于二叉堆数据结构的排序算法,它利用堆的性质进行排序。堆是一个完全二叉树,可以分为最大堆和最小堆两种类型。

21610

详解排序算法--堆排序选择排序排序

选择排序 选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。...首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。...选择排序每次交换一对元素,它们当中至少有一个将被移到其最终位置上,因此对n个元素的表进行排序总共进行至多n-1次交换。在所有的完全依靠交换去移动元素的排序方法中,选择排序属于非常好的一种。 ? !...这就是堆排序的由来 堆排序排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。...原地堆排序 基于以上堆相关的操作,我们可以很容易的定义堆排序

96230

排序算法之交换排序(冒泡排序、快速排序

交换排序 所谓交换,是指根据序列中两个关键字的比较结果来对换这两个记录在排序中的位置。...冒泡排序 概念 冒泡排序的基本思想是:从前往后(或从后往前)两两比较相邻元素的值,若为逆序(即A[I-1]>A[I]),则交换它们,直到序列比较完。...我们称它为第一趟冒泡,结果是将最小的元素交换到待排序列的第一个位置(或将最大的元素交换到待排序列的最后一个位置),关键字最小的元素如气泡一样逐渐向上“漂浮”。最终一个一个排好了位置。...概念 快速排序的基本思想是基于分治法的:在待排序表L【1.。。...n】中任取一个元素pivot作为枢轴(通常取首元素),通过一趟排序将待排序表划分为独立的两部分,使其中一个表L【1.。。k-1】中的元素都大于枢轴pivot,另一个表L【k+1.。。。

58230

排序算法】冒泡排序、选择排序、插入排序

冒泡排序 依次比较相邻的两个元素,将比较小的数放在前面,比较大的数放在后面,直到所有元素排列完。 最容易理解的版本 对一个数组的n个整型数据进行n趟排序,每趟排序都尝试将较大值放到数组右侧。...剩余元素均小于5,后续排序无需再与5进行比较。 在第二趟排序结束后,数组最右侧是4,5,剩余元素均小于4,5,后续排序无需再对4,5进行比较。...选择排序 分别从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。...选择排序是不稳定的排序算法,即对于值相同的数据元素,彼此的前后顺序可能会发生改变。 对比冒泡排序 与冒泡排序不同: 冒泡排序是逐趟选出未排序序列中的最大值,置于右侧。...不同于冒泡排序,选择排序每趟排序最多只会改变两个元素的位置。不能设置flag检查是否排序完成,也无法通过flag检查。 选择排序需要遍历剩余所有元素,内层循环不能同冒泡循环一样修改右边界。

16130

排序——选择排序

选择排序 --- 简单选择排序 基本思想 每一趟在后面 n-i +1个中选出关键码最小的对象, 作为有序序列的第 i 个记录 算法实现 void SelectSort(SqList &L){ // 对记录序列...L.length]作简单选择排序 for(i = 1; i <= L.length; i++){ // 选择第 i 小的记录,并交换到位 k = i; for(j = i + 1; j <...算法分析 含有n个叶子节点的完全二叉树的深度为log2 n+1,则选择排序的每一趟都需作log2n次比较,排序的时间复杂度O(nlog2n)。...改进:简单选择排序没有利用上次选择的结果,是造成速度满的重要原因。如果,能够加以改进,将会提高排序的速度。...--- 堆排序 堆:把待排序的数据元素存放在数组中r1…n,把r看成是一棵完全二叉树,每个结点表示一个记录。ri结点的左孩子是r2i,右孩子是r2i+1。

853125
领券