精华内容
下载资源
问答
  • 这可能有助于:A=[10,9,8,3,1,0]B=[1,9,18,33,41,50]C=[1, 1, 1, 1, 1]D= [1]E=[1, 2, 3, 2, 1]F =[]def order(someList):asc = Truedesc = Truefor idx in range(1, len(someList)):if someList[idx] - someList...

    这可能有助于:A=[10,9,8,3,1,0]

    B=[1,9,18,33,41,50]

    C=[1, 1, 1, 1, 1]

    D= [1]

    E=[1, 2, 3, 2, 1]

    F =[]

    def order(someList):

    asc = True

    desc = True

    for idx in range(1, len(someList)):

    if someList[idx] - someList[idx - 1] >= 0:

    asc = asc & True

    desc = desc & False

    else:

    desc = desc & True

    asc = asc & False

    if asc and not desc:

    return "list is in ascending order"

    elif desc and not asc:

    return "list is in descending order"

    else:

    return "list is in no order"

    print(order(A))

    print(order(B))

    print(order(C))

    print(order(D))

    print(order(E))

    print(order(F))

    执行时,此代码的输出为:list is in descending order

    list is in ascending order

    list is in ascending order

    list is in no order

    list is in no order

    list is in no order

    这里我们要做的是维护两个布尔标志asc和desc,这两个标志将表示传递的列表是按升序还是降序排列。

    然后,对于列表中的每一对连续数字,我们计算它们的差if someList[idx] - someList[idx - 1] >= 0:,然后使用False和desc标记,反之亦然。

    直观地说,在这段代码中所做的工作如下:

    如果一个序列是按升序排列的,那么每一个连续的数字对之间的差值将大于零,例如:考虑这个序列[a, b, c, d, e, f],其中所有字符都表示数字,假设这个序列是升序的,即a <= b <= c <= d <= e <= f,如果我们考虑所有连续的数字对,即(a, b), (b, c), (c, d), and so on..,并计算每一对的差,即b-a, c-b, d-c and so on..,然后every difference will be >= 0,即b-a >= 0 and c-b >= 0 and d-c >= 0 and e-d >= 0 and f-e >= 0,这是由上面代码中的asc布尔标志表示。对于desc布尔标志也有类似的解释。

    如果您希望在使用for循环时使用上述代码的较小版本,请使用:A=[10,9,8,3,1,0]

    B=[1,9,18,33,41,50]

    C=[1, 1, 1, 1, 1]

    D= [1]

    E=[1, 2, 3, 2, 1]

    F = []

    def order(someList):

    results = [True if second >= first else False for first, second in zip(someList, someList[1:])]

    if any(results) and all(results):

    return "ascending order"

    elif not any(results) and not all(results):

    return "descending order"

    else:

    return "no order"

    print(order(A))

    print(order(B))

    print(order(C))

    print(order(D))

    print(order(E))

    print(order(F))

    以及输出descending order

    ascending order

    ascending order

    no order

    no order

    no order

    展开全文
  • List.Sort有三种结果 1,-1,0分别大,小,相等升序降序比较,默认List的排序是升序排序如果要降序排序,也很简单,只需要在前面加一个负号List tmp = new List(){5,1,22,11,4};// 升序tmp.Sort((x, y) => x....

    List.Sort有三种结果 1,-1,0分别是大,小,相等

    升序降序比较,默认List的排序是升序排序

    如果要降序排序,也很简单,只需要在前面加一个负号

    List tmp = new List(){5,1,22,11,4};

    // 升序

    tmp.Sort((x, y) => x.CompareTo(y));

    // 降序

    tmp.Sort((x, y) => -x.CompareTo(y));

    Console.WriteLine(tmp);

    // 22,11,5,4,1

    对于非数值类型比较用.CompareTo(...),基于IComparable接口。基本上C#的值类型都有实现这个接口,包括string。

    而数值类型也可以自己比较。排序时左右两个变量必须是左-比较-右,切记不可反过来比较。

    sort方法官方推荐的 命名方式是x(左),y(右) 。对于复杂的比较 可以分出来,单独写成函数

    多权重比较

    假设需要tuple里item2的值优先于item1。这个时候只要给比较结果*2即可。

    List> tmp = new List>()

    {

    new Tuple(2,1),

    new Tuple(53,1),

    new Tuple(12,1),

    new Tuple(22,3),

    new Tuple(1,2),

    };

    tmp.Sort((x, y) => -(x.Item1.CompareTo(y.Item1) + x.Item2.CompareTo(y.Item2) * 2));

    Console.WriteLine(tmp);

    //22,3

    //1,2

    //53,1

    //12,1

    //2,1

    // List按照指定字段进行排序

    using System;

    using UnityEngine;

    using System.Collections;

    using System.Collections.Generic;

    using UnityEngine.UI;

    public class Test : MonoBehaviour

    {

    public class MyInfo

    {

    public MyInfo(string name, int level, int age)

    {

    this.name = name;

    this.level = level;

    this.age = age;

    }

    public string name;

    public int level;

    public int age;

    }

    public List myList = new List();

    void Awake()

    {

    myList.Add(new MyInfo("A", 2, 9));

    myList.Add(new MyInfo("C", 8, 6));

    myList.Add(new MyInfo("B", 6, 7));

    }

    void Update()

    {

    if (Input.GetKeyDown(KeyCode.Space))

    {

    // 兰姆达表达式,等级排序

    // 升序

    myList.Sort((x, y) => { return x.level.CompareTo(y.level); });

    // 降序

    myList.Sort((x, y) => { return -x.level.CompareTo(y.level); });

    }

    }

    }

    展开全文
  • C# List.sort排序详解(多权重,升序降序)來源:互聯網2016-05-20 12:31:17評論C# List.sort排序详解...其实理解了并不难升序降序比较sort有三种结果 1,-1,0分别大,小,相等。默认List的排序是升序排序如果要降序排...

    C# List.sort排序详解(多权重,升序降序)

    來源:互聯網  2016-05-20 12:31:17  評論

    C# List.sort排序详解(多权重,升序降序)很多人可能喜欢Linq的orderBy排序,可惜U3D里面linq在Ios上会报错,所以就必须使用list的排序。

    其实理解了并不难

    升序降序比较

    sort有三种结果 1,-1,0分别是大,小,相等。

    默认List的排序是升序排序

    如果要降序排序,也很简单,只需要在前面加一个负号

    List tmp = new List(){5,1,22,11,4};tmp.Sort((x, y) => -x.CompareTo(y));Console.WriteLine(tmp);//22,11,5,4,1

    对于非数值类型比较用.CompareTo(...),基于IComparable接口。基本上C#的值类型都有实现这个接口,包括string。

    而数值类型也可以自己比较。排序时左右两个变量必须是左-比较-右(被比较),切记不可反过来用。

    微软官方推荐的参数命名方式是x(左),y(右)

    多权重比较

    假设需要tuple里item2的值优先于item1。这个时候只要给比较结果*X。

    List> tmp = new List>(){ new Tuple(2,1), new Tuple(53,1), new Tuple(12,1), new Tuple(22,3), new Tuple(1,2),};tmp.Sort((x, y) => -(x.Item1.CompareTo(y.Item1) + x.Item2.CompareTo(y.Item2) * 2));Console.WriteLine(tmp);//22,3//1,2//53,1//12,1//2,1

    如果单独对升序降序控制,可以去掉大括号,分开处理

    C# List.sort排序详解(多权重,升序降序)很多人可能喜欢Linq的orderBy排序,可惜U3D里面linq在Ios上会报错,所以就必须使用list的排序。

    其实理解了并不难

    升序降序比较

    sort有三种结果 1,-1,0分别是大,小,相等。

    默认List的排序是升序排序

    如果要降序排序,也很简单,只需要在前面加一个负号

    List tmp = new List(){5,1,22,11,4};tmp.Sort((x, y) => -x.CompareTo(y));Console.WriteLine(tmp);//22,11,5,4,1

    对于非数值类型比较用.CompareTo(...),基于IComparable接口。基本上C#的值类型都有实现这个接口,包括string。

    而数值类型也可以自己比较。排序时左右两个变量必须是左-比较-右(被比较),切记不可反过来用。

    微软官方推荐的参数命名方式是x(左),y(右)

    多权重比较

    假设需要tuple里item2的值优先于item1。这个时候只要给比较结果*X。

    List> tmp = new List>(){ new Tuple(2,1), new Tuple(53,1), new Tuple(12,1), new Tuple(22,3), new Tuple(1,2),};tmp.Sort((x, y) => -(x.Item1.CompareTo(y.Item1) + x.Item2.CompareTo(y.Item2) * 2));Console.WriteLine(tmp);//22,3//1,2//53,1//12,1//2,1

    如果单独对升序降序控制,可以去掉大括号,分开处理

    展开全文
  • 一、升序、降序其实C#中的List的Sort函数中的比较函数CompareTo有三种结果 1, -1 ,0分别代表大,小,相等。默认List的排序是升序排序。举个例子:在比较函数CompareTo()中,如果 x>y return 1;则按照升序排列。...

    周末在家闲着没事,就找个知识点给自己的C#之旅专栏写点文章,填充一下。

    一、升序、降序

    其实C#中的List的Sort函数中的比较函数CompareTo有三种结果 1, -1 ,0分别代表大,小,相等。默认List的排序是升序排序。

    举个例子:在比较函数CompareTo()中,如果 x>y return 1;则是按照升序排列。如果x>y return -1;则是按照降序排列。这就是1和-1大小的含义。其实你非要这么写 xy return 1;升序,如果想要降序只需return -1;即可。

    Tips:系统List默认的排序是升序,如果你想要降序,可以直接在比较函数前面加个负号,把返回结果由1变成-1即可。例如:

    List list = new List() { 2, 1, 3, 4 };

    list.Sort((x, y) => -x.CompareTo(y));

    Console.WriteLine(list); //4,3,2,1

    二、对于非数值类型、string等或者官方未来实现IComparable接口的类型,可通过实现IComparable接口重写CompareTo方法来排序。

    举个例子:自定义一个类,然后继承字: IComparable<>,然后实现接口的方法 int CompareTo(object obj_)就可以了

    public class Person : IComparable

    {

    public int id;

    public string name;

    public Person()

    {

    id = 0;

    name = "name";

    }

    public Person(int id_, string name_)

    {

    id = id_;

    name = name_;

    }

    public int CompareTo(Person obj_)

    {

    if (this.id > obj_.id)

    return 1;

    else

    return -1;

    }

    }

    三、多权重排序

    其实就是对优先级最高的字段进行排序,然后在对次级优先级的字段进行排序就可以了。例如对Persond的对象先进行ID排序,然后再进行Name排序:

    public int CompareToIDName(Person x_, Person y_)

    {

    if (x_.id > y_.id)

    return 1;

    else if (x_.id == y_.id)

    {

    return x_.name.CompareTo(y_.name);

    }

    else

    return -1;

    }

    四、使用匿名函数来实现Comparison

    虽然想实现排序上面的接口代码也不多,但有时候只是偶尔排序,并不想修改类,怎么办呢?当然有更简单的方法,委托和lambda表达式:

    public void Init()

    {

    m_personList.Add(new Person(10001, "Zhao"));

    m_personList.Add(new Person(10006, "Qian"));

    m_personList.Add(new Person(10006, "Zhao"));

    m_personList.Add(new Person(10004, "Li"));

    m_personList.Add(new Person(10006, "Zhao"));

    m_personList.Sort();

    m_personList.Sort(delegate (Person x, Person y)

    {

    if (x.id > y.id)

    return 1;

    else

    return -1;

    });

    m_personList.Sort((x, y) =>

    {

    return x.name.CompareTo(y.name);

    });

    m_personList.Sort((x, y) => CompareToIDName(x, y));

    }

    by 2020-05-17 周日 晚上

    展开全文
  • sorted(list, key=lambda x: (x[0], -x[1]))我想将以下列表主要在元组列表上进行排序,主要在每个元素中的第二项上以升序排列,然后第一项(字母)项以降序排列:[('Ayoz', 1, 18, 7), ('Aidan', 2, 4, 9), ('Alan', 2...
  • 1、建立测试环境测试环境:SQL Server 2012表结构如下USE [test]GOCREATE TABLE [dbo].[tt8]([id] INT IDENTITY(1,1) NOT NULL,[win_num] [int] NOT NULL DEFAULT ((0)),[lost_num] [int] NOT NULL DEFAULT ((0)),...
  • 排序接口WritableComparable中的compareto()方法如何根据返回值来确定是升序还是降序,或者根据升序还是降序来处理返回值: 在重写方法compareto()的时候,会传对象,我们这里称其为比较对象,当前类为当前对象,...
  • 1.首先不管是升序还是降序,反向排,所以数组下标都从最后开始 2.升序降序的不同只有两数比较时不同(max min) import java.util.*; public class main1 { public static void main(String[] args) { int[]A={...
  • 其实数组倒序输出相对来说还是挺简单的,因为数组已经有序的了,所以只要循环然后压入一个新数组即可。  也许你会这样写: function backSort (arr) { var finalArr = []; for (var i = arr.length - 1; ...
  • 题目描述 输入整型数组和排序标识...1.按照题目要求,录入3组数据,第一组作为第二组的数据个数,第三组判断正序还是逆序输出 2.正序的话,直接调用Arrays里面的sort方法,逆序的话,写一个方法,可以用冒泡,也可以
  • 题目描述 给你一个整数数组 arr 。请你将数组中的元素按照其二进制表示...解释:[0] 唯一一个有 01 的数。 [1,2,4,8] 都有 11 。 [3,5,6] 有 2 个 1 。 [7] 有 3 个 1 。 按照 1 的个数排序得到的结果数组为
  • CCF-201903-1-小中大(C++)

    2019-04-22 15:50:11
    解题思路:已经得知有序,所以判断前两个就可以知道是升序还是降序,然后如果n奇数那么就输出最中间的,如果偶数就输出中间两个的和的一半。关键要解决的也就是中位数的输出,整型就是说中间两个的和是偶数,...
  • 网上清一色的数学方法 (大家脑子真好) 惟一的动态规划还是有问题...第一行(i=1)第一列(j=0)代表以a开头长度为1的字符串个数,显然是1,第一行都是1;第一行最后一列记录这一行的总数,这里26;第二行第一列代表
  • 说到排名,大家是再熟悉不过了。...其语法规则是:rank(要进行比较的数值,在哪个区域比较,降序还是升序)第三个参数“降序还是升序”,降序是0升序是1,如果省略这个参数,则默认为按照降序来进行排名。案例:...
  • 这使得其无论在理解还是在推广性上ÿ0c;都有着十分明显的优 势。 1、跳跃表的结构 跳跃表由多条链构成(S0ÿ0c;S1ÿ0c;S2 ……ÿ0c;Sh)ÿ0c;且满足如下三个条件: &#...
  • 这里这样的情景,要排序列表里面的其中一个属性(时间),写了两个函数一个实现升序,一个实现降序,接着点击的那个方法分别监测点击的次数来调用升序还是降序 1 sorting:function(){ 2 this.clickTime ++...
  • 0 1 2 4 5 6 7 7 0 1 2 4 5 6 6 7 0 1 2 4 5 5 6 7 0 1 2 4 ...二分搜索法的关键在于获得了中间数后,判断下面要搜索左半段还是右半段,我们观察上面加粗的数字都是升序...
  • 1、comparable主要就只有一个函数int compareTo(T o),返回值只有-101,具体升序还是降序看如下代码比较清晰 //降序 static class person implements Comparable&lt;person&gt;{ int a...
  • ,这个方法Comparator接口的一个方法 public int compare(Object o1, Object o2) 本来的顺序就是参数的先后顺序o1、o2;...重写compareTo方法,只是重新定义比较的逻辑(1是比2大呢还是比2小呢),默认是升序排...
  • 对任意的数据库产品,想要在按某字段排序时(不管是升序还是降序),对字段值为null的记录的出现顺序做任意的安排,可以使用以下的通用做法:ORDER BY CASE WHEN Col Is NULL Then 1/0 Else 0/1 End,Col [asc/desc]...
  • Python自定义排序

    2020-10-24 14:57:32
    y[0]即可升序,这里x[0] - y[0] from functools import cmp_to_key a = [[0,1],[0,2],[4,5],[2,3]] def cmp(x,y): if x[0] == y[0]: # 第一个元素相同 return x[1] - y[1]# 那就按照第二个元素升序 return x[0...
  • 3,2,5,4,0},因为1是已经排序好的数组,这时候3就是新元素,需要向排序好的数组里进行插入,这时候比较1和3的大小,看需要升序还是降序来排列1和3的顺序,这里默认升序吧,这时候数组变成{1,3,2,5,4,0} ...
  • 排序算法之冒泡排序

    2018-03-23 17:54:47
    冒泡排序排序算法里面较为简单的一种算法,有升序与降序之分,面试时可问清楚是升序还是降序。 以升序为例,对于数组a[1:n],每次排序处理第1个数至第n-i个数,将其与下一个元素进行比较,较大的数向后移。每次可...
  • 接雨滴

    2020-04-04 14:24:14
    题目描述 给定 n 个非负整数表示每个宽度为 1 的柱子...因为以为先找到左边升序的最高点和右边升序的最高点然后取两者最小然后与中间夹得元素相减得到能够接雨水的值,结果一个实例把我这个想法直接给否了 输入:...
  • 假设按照升序排序的数组在预先未知的某个点上进行了...该题要求找出升序排序数组旋转后,数组中的最小值,本质上还是求数组的最小值。因此,关键找到元素排列的突变点nums[i] > nums[i + 1。 一种方法遍历旋转后
  • 二分套线段树 因为最后只要求一个位置上的数是多少,所以二分一下就...修改完成后,判断那个位置的数值是0还是1即可,如果是1即说明符合了。如果是0即不符。 稍微想一下可以大致理解这是有单调性的。 #include <...
  • 算法复习

    2019-03-06 21:31:59
    二分查找 重要条件:该数组有序的, ... 数组一定有序的,要看清是升序还是降序 例题: 对于一个有序数组,我们通常采用二分查找的方式来定位某一元素,请编写二分查找的算法,在数组中查找...
  • 2、确定x,y的范围:x的范围每个子list的长度,y的范围matrix的元素个数,并且赋给初值(之所以不能都赋给0的原因,从(00)开始应该怎么走,不确定横着走还是纵着走,但是如果从(Xmax,0)开始的话,比...
  • 自定义函数实现对一个有序数组进行插入操作,保证插入后的数组依然有序。主函数调用。 要求:1)共自定义2个函数,分别对数组进行插入和输出。...//x要动态输入的整数,s记录正序还是逆序,1升序0...
  • #include <stdio.h>...//x要动态输入的整数,s记录正序还是逆序,1升序0为逆序 printf("要输入的整数个数:") ; scanf("%d",&n); int i,j; printf("输入一个有序数列:"); ...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 126
精华内容 50
关键字:

升序是0还是1