精华内容
下载资源
问答
  • 得到有序序列
    千次阅读
    2018-08-06 15:41:56

    ///归并排序///
        //归并方法:把两个有序子序列合并成一个有序序列
        public void merge(int[]a, int[]b,int left, int mid, int right){
            //该方法的具体功能:把左子序列a[left:mid] 和 右子序列a[mid+1:right] 归并到 b[left:right] 
            int p=left;//遍历左子序列的游标--a[left:mid]
            int r=mid+1;//遍历右子序列的游标--a[mid+1:right]
            int k=left; //归并结果序列的游标---当前归并元素在结果集中的位置--b[left:right]
            
            while(p<=mid && r<=right){//归并两个子序列,直到其中一个子序列中所有元素都被归并完
                if(a[p]<a[r]){
                  b[k++]=a[p++];
                }else{
                  b[k++]=a[r++];
                }
            }
            
            //经过上面的循环,一定有一个子序列已经归并完成。此时,只要把没归并完的那个子序列剩下的元素直接照搬到结果集b[]中
            if(p>mid){//左子序列排完,,照搬右子序列
                for(int i=r; i<=right;i++){
                    b[k++]=a[i];
                }
            }else{//右子序列排完,,照搬左子序列
                for(int i=p;i<=mid;i++){
                    b[k++]=a[i];
                }
            }
        }
        
        @Test//测试归并方法merge()
        public void mergeTest(){
            int a[] = {60,40, 1,3,5,10,12,35,  -1,0,2,3,4,8,20,24,36};
            int b[] = new int[a.length];
            merge(a,b,2,7,a.length-3);
            print(b);
        }
        
        
        //调用merge()实现排普通序列---其实用快排做这功能更好,这里只是学习
        //把数组a[left:right]范围内的元素进行排序--采用归并
        public void mergeSort(int a[], int left, int right){
            if(left<right){//至少要有2个元素,才进行
                //先分解
                int mid=(left+right)/2; //取中间点二分成两个子区间
                mergeSort(a,left,mid);
                mergeSort(a,mid+1,right);
                
                //再归并
                int b[]=new int[a.length];
                merge(a,b,left,mid,right);
                copyArray(a,b,left,right);//自定义方法,实现:把辅助序列b中的数据拷回到a中
            }
        }
        //自定义方法,实现:把辅助序列b中的数据拷回到a中
        private void copyArray(int[] a, int[] b, int left, int right) {
            for(int i=left;i<=right;i++){
                a[i]=b[i];
            }
        }
        
        @Test
        public void mergeSortTest(){
            int a[] = {60,40, 1,3,5,10,12,35,  -1,0,2,3,4,8,20,24,36};
            mergeSort(a, 0, a.length-1);
            print(a);
        }
        
    }

    更多相关内容
  • 合并两个有序序列为一个有序序列

    千次阅读 2019-10-02 22:52:56
    思路: ...// 合并两个有序序列为一个有序序列(归并的思想) // 每次从两个序列中取出一个元素进行关键字的比较,将较小者放入c[ ]中,最后将各序列余下的部分直接复制到c[ ]中 public class ...

    思路:

    • 使用归并的思想,每次从两个序列中取出一个元素进行比较,将较小者添加进新序列中,最后将剩余部分直接复制到新序列中

    实现代码:

    
    import java.util.Arrays;
    
    // 合并两个有序序列为一个有序序列(归并的思想)
    // 每次从两个序列中取出一个元素进行关键字的比较,将较小者放入c[ ]中,最后将各序列余下的部分直接复制到c[ ]中
    
    public class MergeTwoSequence {
        public static void main(String[] args) {
            int[] a = {12, 45, 67, 90, 101};  // 有序表a
            int[] b = {2, 7, 52, 58, 89, 95}; // 有序表b
            int[] c = merge(a, b);
            System.out.println("合并后的有序序列:"+Arrays.toString(c));
        }
    
        public static int[] merge(int[] a, int[] b){
            int m = a.length;
            int n = b.length;
            int[] c = new int[m+n];
            int i = 0, j = 0, k = 0;
            while(i<m && j<n){
              if(a[i] <= b[j]){
                  c[k++] = a[i++];
              }else{
                  c[k++] = b[j++];
              }
            }
            while(i<m){
                c[k++] = a[i++];
            }
            while(j<n){
                c[k++] = b[j++];
            }
            return c;
        }
    }
    

    运行结果:

    1555914-20190811151310856-2066642973.png

    转载于:https://www.cnblogs.com/paopaolx/p/11335098.html

    展开全文
  • 中序遍历二叉树得到序列有序还是无序的? 中序遍历二叉树得到序列有序还是无序的?
  • Python中的有序序列有哪些list、tuple以及str都是有序序列,和后面两者不同的是list是个可变对象,tuple和str则是不可变对象。主要讲的就是这三种的有序序列的一些方式。方法效果L1.append(var)在后面追加元素L1.pop...

    5e79dd6ee327f142.jpg

    Python中的有序序列有哪些

    list、tuple以及str都是有序序列,和后面两者不同的是list是个可变对象,tuple和str则是不可变对象。主要讲的就是这三种的有序序列的一些方式。方法效果L1.append(var)在后面追加元素

    L1.pop(var)返回相应的元素,并在L1中删除

    L1.remove(var)移除列表中某个值的第一个匹配项

    L1.sort()列表会进行排序

    L1.reverse()列表倒序排列

    L1.count(var)计算列表中某个值出现的次数

    以上就是列表常用的方法,其中L1.remove()在 for…. in….循环中会出现状况。

    比如 ,你想取大于20的数,把小于20的全部删掉 :list2 = range(50)

    for i in list2:

    if i<20:

    print "do something"

    list2.remove(i)

    print list2

    得到的结果是这样的:[2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49]

    原因在于在这个迭代过程中,for..in循环靠的是指针指示[0,1,2,….49]

    ^

    第一次remove之后,列表成这样的形式,[1,2,3,4…49]

    ^

    如果你想要得到正确的结果的话,可以这样写,enumerate,这个内置函数既可以遍历索引,又可以遍历元素。for i, n in enumerate(numbers):

    if n < 20 :

    print "do something"

    numbers[i] = None

    numbers = [n for n in numbers if n is not None]

    tuple

    tuple是不可变的有序序列,一旦初始化,就不能修改。

    因为无法修改所以没有apeend()等方法,也无法删除其中单个元素,只能删除整个元组。tup1 = (1, 4, 5, 3);

    del tup1;

    print tup1

    #得到的答案就是这样

    NameError: name 'tup1' is not defined

    字符串

    str,字符串在python中是有序序列,这意味着字符串在python中可以做很多操作,比如slice。不过有一点是字符串中某部分无法进行修改,因为是不可变对象。

    字符串经常碰到的一个问题就是怎么把 字符串倒序输出。

    这时候我们就可以把slice用到字符串中,编写一个倒序输出的函数如下:def reverse(x):

    if not isinstance(x,basestring):

    raise TypeError ("bad type");

    else:

    return x[::-1]

    isinstance是用来判断参数是否是字符串,如果不是的话将会报错。

    basestring是str和unicode的父类,可以用来分辨是不是字符串的类型。

    展开全文
  • 【填空题】已知字典 x = {i:str(i+3) for i in range(3)} ,那么表达式 sum(x) 的...【判断题】Python中 列表、元组、字符串都属于有序序列, 字典和集合属于无序序列。【填空题】字典中多个元素之间使用 ____________...

    【填空题】已知字典 x = {i:str(i+3) for i in range(3)} ,那么表达式 sum(x) 的值为 ______ , 表达式 sum(item[0] for item in x.items()) 的值为 ___________ 。

    【判断题】Python中 列表、元组、字符串都属于有序序列, 字典和集合属于无序序列。

    【填空题】字典中多个元素之间使用 ____________ 分隔开,每个元素的“键”与“值”之间使用 ________ 分隔开。

    【填空题】表达式 dict(zip([1, 2], [3, 4])) 的值为 _________________________________ 。

    【单选题】语句x,y=eval(input())执行时,输入数据格式错误的是( )。

    【单选题】Python内建所有异常类的基类是( )

    【判断题】Python中的模块包含标准模块、第三方模块和自定义模块。

    【判断题】标准库 os 的 rename() 方法可以实现文件移动操作。

    【判断题】使用 print() 函数无法将信息写入文件。

    【判断题】Python 集合中的元素可以是元组,也 可以是列表。

    【单选题】关于异常处理的else子句和finally子句,以下说法正确的是( )

    【判断题】以写模式打开的文件无法进行读操作。

    【简答题】实例2: 编写出一个通用的人员类(Person),该类具有姓名(name)、年龄(age)、性别(sex)等域,并包含一个吃饭的方法(eat)该方法输出“民以食为天!”信息。然后对Person 类的继承得到一个学生类(Student),该类能够存放学生的5门课的成绩,并能求出平均成绩,同时对父类的eat方法进行覆盖,输出“学校有7个餐厅可供选择 ! ”信息。最后在测试函数中分别对Person类和Student类的功能进行验证。

    【简答题】实例2:随机数字出现频次统计: 1) 随机生成100个整数 2) 数字范围[40,100] 3) 升序输出所有不同的数字及其每个数字的出现次数

    【单选题】关于Python中的复数,下列说法错误的是( )。

    【填空题】表达式 sorted({'a':3, 'b':9, 'c':78}) 的值为 _________________, 表达式 sorted({'a':3, 'b':9, 'c':78}.values()) 的值为 _____________ 。

    【填空题】已知 x = {1:2} ,那么执行语句 x[2] = 3 之后, x 的值为 ________________ 。

    【判断题】Python 字典中的“键”不允许重复, “值”也不允许重复。

    【单选题】以下导入模块的方式中,不合法的是( )

    【简答题】实例2:猜数字游戏 编程让电脑随机生成1~100之间的随机数,由用户输入一个数字竞猜,电脑会提示用户大或者小, 猜错,继续提示;猜对,则输出成功信息和竞猜次数,程序终止。 要求能处理用户输入过程中可能产生的异常。

    【填空题】Python 标准库 os.path 中用来分割指定路径中的文件扩展名的方法是 __________ 。

    【单选题】关于注释,以下不正确的是( )。

    【简答题】实例2: 用户登录验证程序。 1、系统里面有多个用户,用户的账号信息保存在列表里面 users = ['root', 'admin'] passwords = ['123', '456'] 2、用户登录验证(判断用户登录是否成功) (1)输入用户名与密码 (2)判断用户是否存在,如果存在 1)判断用户密码是否正确 如果正确,登录成功,退出循环 如果不正确,输出密码错误信息,重新登录,总共有3次机会登录 (3)如果用户不存在,输出用户不存在信息,重新登录,总共有3次机会

    【判断题】二进制文件不能使用记事本程序打开。

    【判断题】Python 支持使用字典的“键”作为下标来访问字典中的值。

    【填空题】Python语言通过( )来区分不同的语句块。

    【填空题】已知 x = {1:2, 2:3, 3:4} ,那么表达式 sum(x) 的值为 ___________ , 表达式 sum(x.values()) 的值为 _________ 。

    【简答题】实例1:设计问卷调查方案: 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性, 他先用计算机生成了N个1~1000之间的随机整数(N<=1000),N是用户输入的,对于 其中重复的数字,只保留一个,把其余相同的数字去掉,不同的数对应着不同的 学生的学号,然后再把这些数从小到大排序,按照排好的顺序去找同学做调查, 请你协助明明完成“去重”与排序工作。

    【单选题】下列选项中合法的标识符是( )。

    【填空题】字典对象的 _____________ 方法返回字典中的“键 - 值对”列表, 字典对象的 ____________ 方法返回字典的“键”列表, 字典对象的 ______________ 方法返回字典的“值”列表。

    【判断题】文件对象的 tell() 方法用来返回文件指针的当前位置。

    【单选题】试图打开一个不存在的文件时所触发的异常是( )

    【简答题】实例2: 下载使用第三方模块Python PyInstaller将 Python程序生成可执行程序。 在创建了独立应用(自包含该应用的依赖包)之后,可以使用 PyInstaller 将 Python 程序生成可直接运行的程序,这个程序就可以被分发到对应的 Windows 或 Mac OS X 平台上运行。 (1)使用pip工具下载安装第三方模块PyInstaller。 在Windows命令窗口下,执行命令:pip install pyinstaller (2)使用 PyInstaller 工具生成 EXE 程序。 使用命令行工具进入到上题所说的App目录下,执行如下命令: pyinstaller -F App.py 在该命令中使用了-F 选项,该选项指定生成单独的 EXE 文件。执行上面命令,将看到详细的生成过程。当生成完成后,将会在此 App 目录下看到多了一个 dist 目录,并在该目录下看到一个生成的 App.exe 文件,这就是使用 PyInstaller 工具生成的 EXE 程序。与 -F 选项对应的是 -D 选项(默认选项),该选项指定生成一个目录(包含多个文件)来作为程序。 (3)执行生成的 EXE 程序。 在命令行窗口中进入 dist 目录下,在该目录执行 App.exe ,将会看到该程序的输出结果。

    【判断题】扩展库 os 中的方法 remove() 可以删除带有只读属性的文件。

    【填空题】Python 扩展库 _____________ 支持 Excel 2007 或更高版本文件的读写操作。

    【单选题】Python不支持的数据类型有( )。

    【判断题】对字符串信息进行编码以后,必须使用同样的或者兼容的编码格式进行解码才能还原本来的信息。

    【简答题】实例1: 设计一个立方体类Box,定义三个属性,分别是长,宽,高。定义二个方法,分别计算并输出立方体的体积和表面积。

    【单选题】Python语句print(0xA + 0xB)的输出结果是( )。

    【单选题】以下关于import语句和form...import语句导入模块的主要区别的说法中,错误的是( )

    【填空题】已知 x = {1:2, 2:3} ,那么表达式 x.get(3, 4) 的值为 ____ ____ , 表达式 x.get(2, 4) 的值为 ______ 。

    【判断题】标准库中的模块可以直接使用,无须先导入。

    【判断题】对文件进行写操作之后必须显式关闭文件以确保所有内容都得到保存。

    【单选题】函数type(1 + 0xf * 3.14)的返回结果是( )。

    【单选题】在Python程序中,执行到表达式 123+'abc' 时,会抛出( )异常信息。

    【填空题】表达式 {1, 2, 3, 4} - {3, 4, 5, 6} 的值为 __________________ 。

    【单选题】下列标识符中合法的是( )。

    【填空题】表达式 {1, 2, 3} & {3, 4, 5} 的值为 ______________ ___ ________ , 表达式 {1, 2, 3} | {3, 4, 5} 的值为 _____________________ , 表达式 {1, 2, 3} - {3, 4, 5} 的值为 _________ _________ 。

    【填空题】Python 标准库 os.path 中用来判断指定路径是否为文件的方法是 _______________ 。

    【填空题】Python 标准库 os.path 中用来判断指定路径是否为文件夹的方法是 ______________ 。

    展开全文
  • python 中list、tuple等有序序列

    万次阅读 2016-06-07 20:33:38
    list,tuple以及str都是有序序列,和后面两者不同的是list是个可变对象,tuple和str则是不可变对象。主要讲的就是这三种的有序序列的一些方式。 方法 效果 L1.append(var) 在后面追加元素 L1.pop(var)...
  • 两个有序序列的中位数(二分搜索)
  • python 序列

    千次阅读 2018-08-21 13:00:40
    python数据的集合总称序列,分为有序序列和无序序列两类; 有序序列包括:  列表,元组,字符串 无序序列包括:  字典,集合,控制集合数据的对象 一、列表 列表:python中是有序的、可变数据集合,使用一对标识...
  • 使序列有序的最少交换次数

    千次阅读 2018-11-18 19:58:00
    题目1: 给出一个序列,只交换相邻两数,使得序列升序排列,求出最少交换次数。... 当完成最大数的交换后,可以将最大数从序列中划去不管了,即此时序列个数为n-1了,我们再在该序列中找到一个最大数...
  • 7-2 两个有序链表序列的交集 (20 分)

    千次阅读 2019-09-07 09:07:33
    输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。 输出格式: 在一行中输出两个输入序列的交集序列,数字间用空格分开,结尾不能有多余空格...
  • 拓扑序列(拓扑排序)

    千次阅读 2022-05-09 22:55:05
    扩扑
  • 7-1 两个有序链表序列的合并 (10分)

    千次阅读 2020-03-18 15:51:31
    7-1 两个有序链表序列的合并 (10分) 已知两个非降序链表序列S1与S2,设计函数构造出S1与S2合并后的新的非降序链表S3。 输入格式: 输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾...
  • 然后再把有序子序列合并为整体有序序列。 归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每...
  • 这是因为,通过先序遍历序列和后序遍历序列都只能得到根结点,而只有通过中序遍历序列才能利用根结点把左右子树分开,从而递归生成一棵二叉树。当然,这个做法需要保证在所有元素都不相同时才能使用。     ...
  • 序列化和反序列化的底层实现原理是什么?

    万次阅读 多人点赞 2018-04-07 13:53:41
    序列化和反序列化作为Java里一个较为基础的知识点,大家心里也有那么几句要说的,但我相信很多小伙伴掌握的也就是那么几句而已,如果再深究问一下Java如何实现序列化和反序列化的,就可能不知所措了!遥记当年也被问...
  • 求两个等长有序序列的中位数

    千次阅读 2013-05-02 17:37:44
    /*现有两个等长的升序序列序列A,B,试设计一个时间...3:a>b:则中位数只能出现在b和a之间,在序列a中舍弃A之后的元素得到序列A1,在序列B中舍弃b之前的元素,得到B1; 在A1和B1中分别求出中位数,重复上述过程,得到
  • C++ 7-2 两个有序链表合并(新表不含重复元素) (20 分) 已知两个非降序链表序列S1与S2,设计函数构造出S1与S2合并后的新的非降序链表S3。 要求S3中没有重复元素。 输入格式: 输入分两行,分别在每行给出由若干个正...
  • 数据挖掘算法——序列模式

    千次阅读 2022-01-02 21:33:53
    序列模式关联规则挖掘
  • 序列化和反序列化是Java中最基础的知识点,也是很容易被大家遗忘的,虽然天天使用它,但并不一定都能清楚的说明白。我相信很多小伙伴们掌握的也就几句概念、关键字(Serializable)而已,如果深究问一下序列化和反序列...
  •  将a[0……n-1]看成是n个长度为1的有序序列,然后进行两两归并,得到n/2(向上取整)个长度为2(最后一个有序序列的长度可能为1)的有序序列,再进行两两归并,得到n/4(向上取整)个长度为4(最后一个有序序列的长度...
  • Python中的列表、元祖、字典

    千次阅读 2020-12-16 03:53:12
    一、列表一组有序项目的集合。可变的数据类型【可进行增删改查】列表是以方括号“[]”包围的数据集合,不同成员以“,”分隔。列表中能够包括不论什么数据类型,也可包括还有一个列表列表可通过序号訪问当中成员经常...
  • 给一串数据 I ...来得到其对应位上的数据的最长有序序列的长度L; 这是个经典的DP问题。 在这里我们利用F[i]的数组; 来储存其之前数据的最长有序序列 进而得到后面的。 /*最长有序
  • 问题描述:将两个有序的数组,归并为一个有序的新数组 编译环境:vc++6.0 代码: #include <stdio.h> /*将两个有序的数组,归并为一个有序的新数组*/ int main() { int i = 0, j = 0, k = 0; int a[5] = {...
  • 有序加权距离融合阶段,将行人的特征表示输入到距离测度学习中,分别计算行人在三类特征下的独立距离,并将距离排序后,根据距离的排名优化距离权值,最后融合三类距离得到最终距离,从而准确匹配行人。通过在公共数据...
  • 第四章 时间序列分析 时间序列分析所研究的对象是一串随时间变化而又相互关联的动态数字序列它是根据有序随机变量或者观测得到有序数据之间相互依赖所包含的信息用概率统计方法定量地建立一个合适的数学模型并...
  • 下述二叉树中,哪一种满足性质:从任一结点出发到根的路径上所经过的结点序列按其关键字有序() a.二叉排序树 b.哈夫曼树 c.avl树 d.堆 答案:d 解析: 首先a, 二叉排序树(B树即为二叉搜索树或称二叉排序...
  • 题目:输入一个整数数组,判断该数组是不是... 个人解法: 先得到序列对应的中序序列, 然后看中序序列是否从小到大有序, 得出判断. 相比:时间复杂度相同, 增加N的空间, 但可求得对应的中序序列.以下为代码: 代码如下:#i
  • 两两交换(相邻)得到一个有序排列

    千次阅读 2017-02-18 22:42:59
    一个“逆序”的数学定义是这样的,如果存在正整数 i, j 使得 1 ≤ i ≤ n 而且 A[i] > A[j],则 [i], A[j] > 这个有序对称为 A 的一个逆序,又称作一个逆序对。 2、逆序数。整个序列中的逆序对的个数叫做序列的...
  • 最长子序列问题详解

    千次阅读 2021-07-24 15:19:21
    提到最长子序列问题,想必大家都不陌生,今天我主要想分享一下我对子序列问题的一些理解: 先拿最长上升子序列问题来说吧: 很明显这是一个动态规化问题,仔细想想也不难得出其状态转移方程 首先介绍一下dp[]数组...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 129,252
精华内容 51,700
热门标签
关键字:

得到有序序列