精华内容
下载资源
问答
  • 1. sort直接排序 arrRes = ['学生2', '学生1', '学生10', '学生4', '学生3'] arrRes.sort() print(arrRes ) # ['学生1', '学生10', '学生2', '学生3', '学生4'] 含有数字的字符串数组直接使用.sort()排序,得到的...

    1. sort直接排序

    arrRes = ['学生2', '学生1', '学生10', '学生4', '学生3']
    arrRes.sort()
    print(arrRes )
    # ['学生1', '学生10', '学生2', '学生3', '学生4']
    

    含有数字的字符串数组直接使用.sort()排序,得到的结果往往跟我们想要的有些出入。如上,我们想要的结果是[‘学生1’, ‘学生2’, ‘学生3’, ‘学生4’, ‘学生10’],但结果却是[‘学生1’, ‘学生10’, ‘学生2’, ‘学生3’, ‘学生4’]。因为按顺序比较字符串到第三个字符的时候1比2小,所以‘学生10’排在‘学生2’前面了,而不会把10当成一个数字整体跟2进行比较。

    2. 借用函数自定义排序

    所以对于这种字符串跟数字排列比较有规律的,可以人为将它分成两个或多个部分进行比较。

    使用匿名函数,第一个参数用来排序字符串,第二个参数用来排序数字。数字排序必须转成int或者其他数字格式,不然字符串10还是排在2前面。

    arrRes = ['学生2', '学生1', '学生10', '学生4', '学生3']
    arrRes.sort(key=lambda arr: (arr[:2], int(arr[2:])))
    print(arrRes)
    # ['学生1', '学生2', '学生3', '学生4', '学生10']
    

    3. 扩展

    二维数组同理:

    arrRes = [['五班', '学生2'],
    		   ['一班', '学生1'],
    		   ['五班', '学生3'],
    		   ['一班', '学生10'],
    		   ['一班', '学生2'],
    		   ['一班', '学生3'],
    		   ['五班', '学生4'],
    		   ['五班', '学生1']]
    arrRes.sort(key=lambda arr: (arr[0], arr[1][:2], int(arr[1][2:])))
    print(arrRes)
    # [['一班', '学生1'], ['一班', '学生2'], ['一班', '学生3'], ['一班', '学生10'], ['五班', '学生1'], ['五班', '学生2'], ['五班', '学生3'], ['五班', '学生4']]
    

    如果排序方法太复杂,可以将函数提出来,效果是一样的。

    def customeSort(arr):
    	return arr[0], arr[1][:2], int(arr[1][2:])
    
    
    arrRes = [['五班', '学生2'],
    		   ['一班', '学生1'],
    		   ['五班', '学生3'],
    		   ['一班', '学生10'],
    		   ['一班', '学生2'],
    		   ['一班', '学生3'],
    		   ['五班', '学生4'],
    		   ['五班', '学生1']]
    arrRes.sort(key=customeSort)
    print(arrRes)
    
    展开全文
  • 10 冒泡排序

    2021-03-30 08:07:13
    10 冒泡排序思路分析:核心思想:使数组的当前部分(初始时为原数组)的最后一个值最大值(升序)或最小值(降序)使最后一个值最大值的具体操作(升序):数组的当前部分里面每次(从第一个开始)都拿前面一个与...

    vc++高级编程技巧与示例,胡峪,刘静

    71.2元

    (需用券)

    去购买 >

    2ca50510818ffabc404a3d393e6871f9.png

    10 冒泡排序

    思路分析:

    核心思想为:

    使数组的当前部分(初始时为原数组)的最后一个值为最大值(升序)为或最小值(降序)

    使最后一个值为最大值的具体操作为(升序):在数组的当前部分里面每次(从第一个开始)都拿前面一个与后面相相比较,若比后面的值大,就交换,直到前面一个数访问当前数组的倒数第二个元素为止,

    使最后一个值为最小值的具体操作为(降序):在数组的当前部分里面每次(从第一个开始)都拿前面一个与后面相相比较,若比后面的值小就交换,直到前面一个数访问当前数组的倒数第二个元素为止,

    推导过程如下所示:

    int[] a={1,2,3,4,5};以a数组为例,可以得到如下所示的表(以降序为例)

    0350ffbf3ca659e45b5c4e9cf032d24d.png

    准备工作

    //bubble sort的意思是冒泡排序

    int[] a={9,8,7,6,5,4};

    // int[] a={1,2,3,4,5,6};

    // int[] a={1,4,121,4,5,6};

    System.out.println("需要排序的原数组a如下所示:");

    for (int i = 0; i < a.length; i++) {

    System.out.print(a[i]+"\t");

    }

    System.out.println();//换行

    A.升序

    1.核心代码

    //升序

    for (int i = 0; i < a.length-1; i++) {

    for (int j = 0; j < a.length-1-i; j++) {

    if(a[j]>=a[j+1]){

    int temp=a[j];

    a[j]=a[j+1];

    a[j+1]=temp;

    }

    }

    }

    System.out.println("排序后的数组a(升序)如下所示");

    for (int i = 0; i < a.length; i++) {

    System.out.print(a[i]+"\t");

    }

    2.运行截图

    aa7ba38805fa5e35df60f6800c00a759.png

    bc43964ae9188816bc7176f2349f8d9d.png

    b7d310ae3197fffa87e1591c3af194ca.png

    B.降序

    1.核心代码:

    //降序

    for (int i = 0; i < a.length-1; i++) {

    for (int j = 0; j < a.length-1-i; j++) {

    if(a[j]<=a[j+1]){

    int temp=a[j];

    a[j]=a[j+1];

    a[j+1]=temp;

    }

    }

    }

    System.out.println("排序后的数组a(降序)如下所示");

    for (int i = 0; i < a.length; i++) {

    System.out.print(a[i]+"\t");

    }

    2.运行截图

    ad47ab85a910b09c863a83cfa1b04fa9.png

    d93e0712d71ea97e57b52db6680864bb.png

    59393eb37f3913037014a0d77ae44839.png

    java 11官方入门(第8版)教材

    79.84元

    包邮

    (需用券)

    去购买 >

    f0f3f55624fb396b1764d42d6df88864.png

    展开全文
  • 最近工作碰到客户的特殊要求,需要将特定的数据排序在前面,然后才按时间顺序排序,这个之前还真没有碰到过,好在有万能的度娘,搜索了一下,发现可以实现,使用order by decode语句即可。对于order by熟悉SQL的朋友...

    最近工作碰到客户的特殊要求,需要将特定的数据排序在前面,然后才按时间顺序排序,这个之前还真没有碰到过,好在有万能的度娘,搜索了一下,发现可以实现,使用order by decode语句即可。

    2dcb9488a2e479d298b4cd3b37afb6ca.png

    对于order by熟悉SQL的朋友都知道了,而decode是oracle的函数,解释如下:

    语法使用:DECODE(value, if1, then1, if2,then2, if3,then3, . . . else )

    Value 代表某个表的任何类型的任意列或一个通过计算所得的任何结果。当每个value值被测试,如果value的值为if1,Decode 函数的结果是then1;如果value等于if2,Decode函数结果是then2;等等。事实上,可以给出多个if/then 配对。如果value结果不等于给出的任何配对时,Decode 结果就返回else 。

    总结:简单来说就是if then的使用集合在一个函数中。有了这个函数,不但让SQL更简洁,而且可以应用到多处场合,今天说说应用于order by 之后,让指定内容排在前面。

    例如有如下表TEST:

    编号

    姓名

    年龄

    分数

    A001

    小红

    20

    90

    A002

    小蓝

    31

    100

    A003

    小黑

    27

    98

    A004

    小白

    35

    93

    A004

    小紫

    25

    100

    要求,25岁排序在前面,然后按分数排序,这时就需要使用order by decode语句了。

    查询语句为:

    SELECT * FROM TEST ORDER BY DECODE(年龄,25,分数)

    查询结果如下:

    7cf306c76802ff3ace059be644f98e8b.png

    这就是DECODE函数强大之处,在SQL SERVER或MY SQL等数据库,估计实现这样的排序会有点复杂,但ORACLE中只需要order by decode却可。

    等等,别走! ^_^

    好消息,快手官方发红包啦,登录即送2元,秒提现! 查看详情>>

    展开全文
  • 复制任意空单元格,选中需要排序的列——右键——选择性粘贴——运算——加 ok

    复制任意空单元格,选中需要排序的列——右键——选择性粘贴——运算——加
    ok

    展开全文
  • 对id进行排序,将指定的id排序在前面 SELECT id FROM `sys_logs` ORDER BY CASE WHEN ( id IN ( SELECT id FROM sys_logs WHERE id > 10 AND id < 15 ) ) THEN 0 ELSE 1 END, id 红框中填写指定...
  • 1.稳定排序2 非稳定排序3 原地排序4 非原地排序5 时间复杂度6 空间复杂度 稳定排序:冒泡排序(bubble_sort) — O(n2) 插入排序 (insert_sort)— O(n2) 归并排序 (merge_sort)— O(n log n) 非稳定排序:选择...
  • java实现10排序算法

    万次阅读 多人点赞 2021-05-06 21:59:15
    1.冒泡排序(Bubble Sort) import java.util.Arrays; //冒泡排序 public class BubbleSort_01 { public static void main(String[] args) { int a[]={3,44,38,5,47,15,36,26,27,2,46,4,19,50,48}; //记录比较...
  • 1 归并排序1.1 原理将待排序列划分前后两部分,直到子序列的区间长度为1;对前后两部分分别进行排序,再将排好序的两部分合并一起。1.2 实现1 static void Merge(ElemType* pElem, int p...
  • 冒泡排序详解,附题目和代码。
  • 说明 十大排序算法可以说是每个程序员都必须得掌握的了,如果你们像从 0 详细学习每一篇,那么你们可以看前面的文章。 但是呢,有些人可能已经学过,想要快速复习一下,看...1、稳定排序:如果 a 原本 b 的前面,且.
  • 面试必算法(1):排序算法 面试必算法系列之排序算法 前文推荐: 【版权申明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权); 本博客的内容来自于; 学习、合作与交流联系q384660495; 本博客的...
  • 例题:C语言实现从小到大对10个数进行排序,要求使用冒泡排序实现。 解题思路:排序的规律有两种:一种是“升序”,从小到大;另一种是“降序”,从大到小。 源代码演示: #include<stdio.h>//头文件 int...
  • MySQL中order by 排序遇到NULL值的问题 MySQL数据库,order by排序的时候,如果存在NULL值,那么NULL是最小的,ASC正序排序的话,NULL值是前面的。 如果我们想让NULL排后面,让非NULL的行排在前面该怎么做呢...
  • 原标题:10 大经典排序算法(动图演示+ C 语言代码)来源:C语言与CPP编程以前也零零碎碎发过一些排序算法,但排版都不太好,又重新整理一次,排序算法是数据结构的重要部分,系统地学习很有必要。时间、空间复杂度...
  • 排序(习题课)

    2021-05-25 05:48:31
    (插入排序 )对序列15, 9, 7, 8, 20, -1, 4进行排序,若经一趟排序后的排列9, 15, 7, 8, 20, -1, 4,则采用的是(C)排序。A.选择B.堆C.直接插入D.冒泡选择排序是每次选择未排序子列中最大(最小)的放到最后,显然4...
  • 按日期排序,并借助ORDER BY子句和IS NULL属性设置最后一个空日期。...上述语法中,我们将该日期之后首先对NULL进行排序。为了理解上述语法,让我们创建一个表。创建表的查询如下:mysql>cr...
  • python中的排序问题

    2021-11-29 14:27:59
    这是因为sort()采取了按字符键值排序的手段,所以a10排前面。 如果想要正确排序,需要 path_list.sort(key=lambda x:int(x[:-4])) lambda是一个隐函数,是固定写法,不要写成别的单词;x表示列表中的一个元素,...
  • 它的工作原理是:第一次从待排序的数据元素中选出最小的一个元素,存放序列的起始位置,然后再从剩余的未排序元素中寻找到最小元素,继续放在下一个位置,直到待排序元素个数0。 选择排序代码如下: public ...
  • 文章详细总结了插入排序、希尔排序、选择排序、归并排序、交换排序(冒泡排序、快速排序)、基数排序、外部排序。从`思想`到`代码实现`。 大三党,大数据专业,正在面试准备,欢迎学习交流`。
  • 273答案:5手机版解决时间 2021-02-27 04:21提问者繁华落尽2021-02-26 20:12C语言(简单的)编写程序输入一维整形数组a[10],将其按由小到大排序后输出最佳答案二级知识专家你哪知我潦倒你2021-02-26 20:25#include#...
  • 一、单字段排序 先造点数据 pigs.add(new Pig(1, "猪爸爸", 31, "M", false)); pigs.add(new Pig(2, "猪妈妈", 28, "F", true)); pigs.add(new Pig(3, "乔治", 2, "M", false)); pigs.add(new Pig(4, "佩奇", 5, "F...
  • 十大排序算法

    万次阅读 多人点赞 2021-08-20 13:37:46
    对每一对相邻元素作同样的工作,从开始第一对到尾部的最后一对,这样最后的元素应该是最大(小)的数 重复步骤1~2,重复次数等于数组的长度,直到排序完成 代码实现 对下面数组实现排序:{24, 7, 43, 78, 62, 98...
  • 排序算法_案例

    2021-01-02 17:25:43
    1)设待排序的关键字序列{12,2,16,30,28,10,16*,20,6,18},试分别写出使用以下排序方法,每趟排序结束后关键字序列的状态。 直接插入排序 11 折半插入排序 11 希尔排序(增量选用5、3、1) 11 冒泡...
  • 指令重排序导致的可见性问题

    千次阅读 2021-11-18 10:57:47
    01 什么是指令重排序 指令重排序是指编译器或CPU为了优化程序的执行性能而对指令进行重新排序的一种手段,重排序会带来...在前面分析JIT优化中提到的循环表达式外提(Loop Expression Hoisting)就是编译器层面的重排序
  • 稳定排序和不稳定排序

    千次阅读 2021-01-17 13:07:27
    这几天笔试了好几次了,连续碰到一个...本文是针对老是记不住这个或者想真正明白到底为什么是稳定或者不稳定的人准备的。首先,排序算法的稳定性大家应该都知道,通俗地讲就是能保证排序前2个相等的数其序列的前后...
  • 每找到待排序序列的最大值,就将该最大值固定排序序列的尾部,且每找到一个待排序序列最大值需要循环一次,n 个值则需要循环 n 次,但最后一个值无需比较,则实际需循环 n-1 次,即 i < arr.length - 1 。 ...
  • len - 1; i++) { for (int j = 0; j + 1 < len - i; j++) { if (strcmp(arr[j], arr[j + 1]) > 0) { const char* tmp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] =.
  • c语言中用冒泡排序法排列任意输入的10个数,用程序输出从小到大的排列具体过程,谢谢。。关注:145答案:6mip版解决时间 2021-01-17 15:49提问者日光獨自傾城2021-01-16 22:29for j:=1 to n-1 do for i:=1 to n-j doif...
  • 类似气泡上涌的动作,将数据数组中从小到大或者从大到小不断的向前移动 1.1 基本思想 冒泡排序的基本思想是对比相邻的两个元素值,如果满足条件就交换元素值,把较小的元素移动到数组前面,把大的元素移动到数组...
  • 2)程序读取完学生及其成绩的数据后,能够将stuList中的学生按照平均成绩降序排列(如果平均成绩相同,学号数字小的排在前面), 并输出排序后的学生学号、姓名和成绩。 输入格式: 多行表示的学生成绩,每一行是一...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 367,644
精华内容 147,057
关键字:

为什么排序时会10在1前面