精华内容
下载资源
问答
  • 浅谈快速排序

    2018-08-26 19:03:53
    它的基本框架就是:定左端一个数为基数x,提取出来... 从右边扫描,大的不管,将比x小的数扔到数组左端,左端前进一;再从左开始扫描,将比x大的扔到数组右端,右端后退一。如此反复,当i = = j时,说明数组...
       它的基本框架就是:定左端一个数为基数x,提取出来(相当于空出一个位置放置右端比x大的数)。然后把小于x的数扔左边,大于x的数扔右边。
       两个数i , j代表数组两端始末位置,开始扫描。因为第一步处理了左边,第二步就应该处理右边。
       从右边扫描,大的不管,将比x小的数扔到数组左端,左端前进一位;再从左开始扫描,将比x大的扔到数组右端,右端后退一位。如此反复,当i = = j时,说明数组只剩下一个位置,这个位置上原本的数要么大于x要么等于要么小于。大于或小于的值会在i = = j之前被扔到右端或左端,等于的情况赋值也没影响。所以将x赋给这个位置。这样之后,数组[0( l ) ~i - 1] 全部小于x, [ i + 1~ r ] 全部大于x,完成一轮排序,分成两端再进行排序。
       以此类推,最终当l = = r无法再进入下一层递归时,该区间必然有序(只有一个元素)。递减排序左右相反即可。
    

    代码实现:(我这种以第一个为基准的代码会有一个弊端,如果一个序列本身有序,那么时间复杂度就会退化到O(n^2),推荐随机选取基准数或者选取中间的数)

    #include <iostream>
    #include <cmath>
    using namespace std;
    int a[100010];
    void quicksort(int l,int r){
        int i=l,j=r,x=a[l];
        if (l<r){
        while (i<j){
            while (i<j&&a[j]>x)j--;
            if (i<j)a[i++]=a[j];
            while (i<j&&a[i]<x)i++;
            if (i<j)a[j--]=a[i];
        }
        a[i]=x;
        quicksort(l, i-1);
        quicksort(i+1, r);
        }
    }
    int main(){
        int n;
        cin>>n;
        for (int i=1;i<=n;i++)cin>>a[i];
        quicksort(1, n);
        cout<<a[1];
        for (int i=2;i<=n;i++)cout<<' '<<a[i];
        cout<<endl;
        return 0;
    }
    展开全文
  • 光标移到第二章,这时可以看到第二章的页眉和第一章是相同的,鼠标双击页眉Word会弹出页眉页脚工具栏,工具栏上有一个“同前”按钮(图像按钮,不是文字),这个按钮按下表示本节的页眉与前一节相同,我们需要的是各...
  • 【隐藏选项卡】 可以隐藏Excel2007及2010功能区的各选项卡(如:开始、插入、开发工具等)。 图 片 工 具 【选择本表图片】 将工作表中的图表导出为图片保存起来。 【批量导入图片到右列】 批量将图片导入到工作表...
  • 【隐藏选项卡】 可以隐藏Excel2007及2010功能区的各选项卡(如:开始、插入、开发工具等)。 图 片 工 具 【选择本表图片】 将工作表中的图表导出为图片保存起来。 【批量导入图片到右列】 批量将图片导入到工作表...
  • 150.把第一列=某个值对应的第二列的内容连在一起,并用、隔开 151.取得系统使用模式 152.计算机注销/关机/重启 153.更改计算机名称 154.n位开始取出字符串中的汉字、英文字母、数字 155.在指定列中寻找含有指定...
  • delphi 开发经验技巧宝典源码

    热门讨论 2010-08-12 16:47:23
    0094 使用RightStr函数从右边取得指定个数的字符串 65 0095 使用Length函数取得一段字符串的长度 65 0096 使用Pos函数返回子字符串一次出现的索引值 66 0097 使用Quotedstr函数返回字符串的引证串 66 0098...
  • 0094 使用RightStr函数从右边取得指定个数的字符串 65 0095 使用Length函数取得一段字符串的长度 65 0096 使用Pos函数返回子字符串一次出现的索引值 66 0097 使用Quotedstr函数返回字符串的引证串 66 0098...
  • 0094 使用RightStr函数从右边取得指定个数的字符串 65 0095 使用Length函数取得一段字符串的长度 65 0096 使用Pos函数返回子字符串一次出现的索引值 66 0097 使用Quotedstr函数返回字符串的引证串 66 0098...
  • 0094 使用RightStr函数从右边取得指定个数的字符串 65 0095 使用Length函数取得一段字符串的长度 65 0096 使用Pos函数返回子字符串一次出现的索引值 66 0097 使用Quotedstr函数返回字符串的引证串 66 0098...
  • 0094 使用RightStr函数从右边取得指定个数的字符串 65 0095 使用Length函数取得一段字符串的长度 65 0096 使用Pos函数返回子字符串一次出现的索引值 66 0097 使用Quotedstr函数返回字符串的引证串 66 0098...
  • 0094 使用RightStr函数从右边取得指定个数的字符串 65 0095 使用Length函数取得一段字符串的长度 65 0096 使用Pos函数返回子字符串一次出现的索引值 66 0097 使用Quotedstr函数返回字符串的引证串 66 0098...
  •  这里的一个表显示第二个参数是如何工作的: 值 含义 0 一周以星期日开始,返回值范围为 0-53 1 一周以星期一开始,返回值范围为 0-53 2 一周以星期日开始,返回值范围为 1-53 3 一周以星期一开始,...
  • 正则表达式

    2014-12-03 14:51:39
    在正则表达式中,括号的第二个用途是在完整的模式中定义子模式。当一个正则表达式成功地和目标字符串相匹配时,可以目标串中抽出和括号中的子模式相匹配 的部分.例如,假定我们正在检索的模式是一个或多个字母后面...
  • 这里的IDE设备包括了IDE硬盘和IDE光驱,第一、第二组设备是指主板上的第一、第二根IDE数据线,一般来说靠近芯片的是第一组IDE设备,而主设备、设备是指在一条IDE数据线上接的两个设备,大家知道每根数据线上可以接...
  • 函数作用:从右边开始查找指定字符在字符串中的位置...43 '15.函数作用:从右边开始查找指定字符在字符串中的位置...44 '16.函数作用:计算工龄.................................44 '17.函数作用:计算日期差,除去星期...
  • 你必须知道的495个C语言问题

    千次下载 热门讨论 2015-05-08 11:09:25
    我就可以把“array”当作下标1 开始的数组。 函数和多维数组 6.18 当我向一个接受指针的指针的函数传入维数组的时候,编译器报错了。 6.19 我怎样编写接受编译时宽度未知的维数组的函数? 6.20 我怎样...
  • IIS6.0 IIS,互联网信息服务

    热门讨论 2010-08-23 21:20:55
     第二篇 IIS之FTP服务器 一、建立你的FTP站点 第一个FTP站点(即“默认FTP站点”)的设置方法和更多FTP站点的建立方法请参照前文Web服务器中相关操作执行。需要注意的是,如果你要用一个IP地址对应多个不同的FTP...
  • 第二章 用户和权限 一、 用户介绍 ORACLE用户是学习ORACLE数据库中的基础知识,下面就介绍下类系统常用的默认ORACLE用户: 1. sys用户:超级用户,完全是个SYSDBA(管理数据库的人)。拥有dba,sysdba,sysoper等角色或...
  • ~1章 声明和初始化 1 基本类型 1 1.1 我该如何决定使用哪种整数类型? 1  1.2 为什么不精确定义标准类型的大小? 2 1.3 因为C语言没有精确定义类型的大小,所以我一般都用typedef定义int16和int32。然后...
  • 《你必须知道的495个C语言问题》

    热门讨论 2010-03-20 16:41:18
    3.7 是否可以安全地认为,一旦&&和||左边的表达式已经决定了整个表达式的结果,则右边的表达式不会被求值? 36  3.8 为什么表达式printf("%d %d", f1(), f2()); 先调用了f2?我觉得逗号表达式应该确保左到右的...
  • 3.7 是否可以安全地认为,一旦&&和||左边的表达式已经决定了整个表达式的结果,则右边的表达式不会被求值? 65 3.8 为什么表达式printf("%d %d", f1(), f2()); 先调用了f2?我觉得逗号表达式应该确保左到右的求...
  • 3.7 是否可以安全地认为,一旦&&和||左边的表达式已经决定了整个表达式的结果,则右边的表达式不会被求值? 65 3.8 为什么表达式printf("%d %d", f1(), f2()); 先调用了f2?我觉得逗号表达式应该确保左到右的求...
  • 我就可以把“array”当作下标1 开始的数组。  函数和多维数组  6.18 当我向一个接受指针的指针的函数传入维数组的时候,编译器报错了。  6.19 我怎样编写接受编译时宽度未知的维数组的函数?  6.20 我...
  • ='\n')的代码…… 3.7 是否可以安全地认为,一旦&&和||左边的表达式已经决定了整个表达式的结果,则右边的表达式不会被求值? 3.8 为什么表达式printf("%d%d",f1(),f2());先调用了f2?我觉得逗号表达式应该确保...
  • 人力资源管理软件(完全免费)

    热门讨论 2011-03-08 11:36:20
    默认为演示库供学习练习,正式使用时使用右边的选择数据库切换到正式库 采用模板文件进行一次性导入或者按下面分别建立相关信息 建立部门信息,支持导入 建立岗位信息,支持导入 调整数据字典,支持导入 资料...

空空如也

空空如也

1 2
收藏数 35
精华内容 14
关键字:

从右边第二位开始提取