列举你所知道的排序方法,请写出快速排序的伪代码

排序的方法有:插入排序(直接插入排序、希尔排序),交换排序(冒泡排序、快速排序),选择排序(直接选择排序、堆排序),归并排序,分配排序(箱排序、基数排序)

快速排序的伪代码:

/ /使用快速排序方法对a[ 0 :n- 1 ]排序

从a[ 0 :n- 1 ]中选择一个元素作为m i d d l e,该元素为支点

把余下的元素分割为两段left 和r i g h t,使得l e f t中的元素都小于等于支点,而right 中的元素都大于等于支点

递归地使用快速排序方法对left 进行排序

递归地使用快速排序方法对right 进行排序

所得结果为l e f t + m i d d l e + r i g h t

伪代码:

 1 quicksort(A, lo, hi)
 2   if lo < hi
 3     p = partition(A, lo, hi)
 4     quicksort(A, lo, p - 1)
 5     quicksort(A, p + 1, hi)
 6
 7 partition(A, lo, hi)
 8     pivot = A[hi]
 9     i = lo //place for swapping
10     for j = lo to hi - 1
11         if A[j] <= pivot
12             swap A[i] with A[j]
13             i = i + 1
14     swap A[i] with A[hi]
15     return i

http://www.cnblogs.com/baokang/p/4737492.html

java面试题1排序算法

java面试题2排序算法

时间: 2024-10-10 20:25:46

列举你所知道的排序方法,请写出快速排序的伪代码的相关文章

2015年9月28日作业(请写出项目范围管理论文的提纲)

作业内容:请写出项目范围管理论文的提纲 项目概述 (1)介绍项目基本情况 (2)项目范围管理的定义和目的 (3)介绍项目范围管理主要经过范围规划.范围定义.创建WBS.范围确认.范围控制 范围规范 (1)介绍项目章程.项目的初步范围说明书.项目管理计划 (2)制定项目范围管理计划的方法与过程 (3)简要介绍项目范围管理计划 范围定义 (1)制定项目范围说明书 (2)项目范围说明书应包含的内容说明 创建WBS (1)创建WBS的方法 (2)项目的基线 范围确认 (1)范围确认的定义及输入 (2)范

php面试题:如何知道一个未知长度的字符串哪个字符出现的次数最多?(字符串可由字母,数字及其他字符组成)请写出代码。

如何知道一个未知长度的字符串哪个字符出现的次数最多?(字符串可由字母,数字及其他字符组成)请写出代码. $str="asdfgfdas323344##$\$fdsdfg*$**$*$**$$443563536254fas";//任意长度字符串 //解法一(最快速的解法,但是基本功要扎实) $arr=str_split($str); $arr=array_count_values($arr); arsort($arr); print_r($arr); //解法二(对逻辑能力有一定要求)

为什么要使用MVC模式,MVC模式的优势有哪些?请写出你熟悉的MVC轻量级框架名称。

MVC就是常说的:模型(Model),视图(View)和控制Controller) 它把业务处理和Jsp页面分开了.而以前的Jsp页面是把所有的代码都写在Jsp页面中,那样不利于维护 MVC模式的目的就是实现Web系统的职能分工. MVC模式的好处: 1.各施其职,互不干涉 在MVC模式中,三个层各施其职,所以如果一旦哪一层的需求发生了变化,就只需要更改相应的层中的代码而不会影响到其它层中的代码. 2.有利于开发中的分工 在MVC模式中,由于按层把系统分开,那么就能更好的实现开发中的分工.网页设

几个你所不知道的技巧助你写出更优雅的vue.js代码

1. watch 与 computed 的巧妙结合 如上图,一个简单的列表页面. 你可能会这么做: created(){ this.fetchData() }, watch: { keyword(){ this.fetchData() } } 如果参数比较多,比如上图 关键字筛选, 区域筛选, 设备ID筛选, 分页数, 每页几条数据, 可能会是这样: data(){ return { keyword:'', region:'', deviceId:'', page:1 } }, methods:

请写出并说明如何在命令行下运行PHP脚本(写出两种方式)同时向PHP脚本传递参数

方法一: <?php if ($argc > 1){ print_r($argv); } ?> php.exe test.php welcome Ricky Feng 方法二: 还有一种这样的,提示用户输入,然后获取输入的参数.有点像C语言 <?php fwrite(STDOUT, "Enter your name: "); $name = trim(fgets(STDIN)); fwrite(STDOUT, "Hello, $name!")

如有如下注册界面,请写出相应的html和Script脚本

我们经常会遇到这样的需求,今天用原生js来实现. 实现思路: 1.布局,通过div层将 用户名输入,密码输入.确认密码输入,垂直排列 用户名.输入框.提示分别用Label.input.span, 要注意的是Label.input.span都是行级元素,需要转换成块级元素进行宽高设置. 布局的图:如下 2.根据布局分层次设置布局的样式 3.JS里实现button的点击事件,通过JS,DOM操作获取input的值,进行验证. 代码实现: register.html: <!DOCTYPE html>

面试题之请写出用于校验 HTML 文本框中输入的内容全部为数字 的 javascript 代码

<input type="text" id="d1" onblur=" chkNumber(this)"/> <script type=”text/javascript” /> function chkNumber(eleText) { var value =eleText.value; var len =value.length; for(vari=0;i<len;i++) { if(value.charAt(i)

2.为方便储户,某银行拟开发计算机储蓄系统。储户填写的存款单或取款单由业务员键入系统,如果是存款,系统记录存款人姓名、住址、存款类型、存款日期、利率等信息,并印出存款单给储户;如果是取款,系统计算利息并印出利息清单给储户。 请写出问题定义并分析此系统的可行性。

数据流程图: 取票图: 航空订票系统技术在目前是一个技术上成熟的系统,并且在航空公司内部准备采取有力措施保证资金和人员配置等.因此,分阶段开发“航空订票系统”的构想是可行的.为了使航空公司适应现代化市场竞争的需求,促进机票预订管理信息化,不断满足旅客预订机票的要求,争取更好的经济效益,可立即着手系统的开发与完善.

老男孩教育每日一题-2017年3月27日-请写出下面linux命令行快捷键的功能?

Ctrl + a Ctrl + e Ctrl + c Ctrl + d Ctrl + l Ctrl + u Ctrl + k Ctrl + r ctrl + y 解答: 1.1.1 光标移动 Ctrl + a 切换到命令行开始 Ctrl + e 切换到命令行末尾 1.1.2 剪切粘贴 Ctrl + u 清除(剪切)光标之前的内容 Ctrl + k 清除(剪切)光标之后的内容 ctrl + y 粘贴 esc + f 把光标移动到单词的结尾 esc + b 把光标移动到单词的开头 ctrl + b