快速排序 需熟练使用
来源:互联网 发布:npm 网络性能管理 编辑:程序博客网 时间:2024/05/17 08:45
还有一种http://blog.chinaunix.net/uid-26404477-id-3329885.html
C语言排序算法:[1]教你理解快速排序。
- |
- 浏览:2205
- |
- 更新:2014-09-22 10:46
- 1
- 2
- 3
- 4
- 5
- 6
百度经验:jingyan.baidu.com百度经验:jingyan.baidu.com百度经验:jingyan.baidu.com
快速排序是经常用到的一种排序算法,它的原理是什么?如何实现,坐标X为您一一解答。
方法/步骤
一、假设我们给一个int数组进行排序,数组中数字初始序列为int a[9]={3,6,5,9,7,1,8,2,4}
步骤阅读二、分析快速排序的原理前,我们先声明一些东西,首先设置一个临时变量用来存放随机取出数组中的一个数,一般我们取数组的第一个元素也就是说temp=a[0],同时设置两个游标分别指向数组第一个元素和最后一个元素。
步骤阅读三、算法的基本运算步骤为:1、依次比较数组的后游标所指与temp的大小,如果temp<a[j],则j--,直到遇到第一个temp>a[j],则停止移动,将a[j]赋值给a[i]
四、算法的基本运算步骤为:2、依次比较数组的前游标所指与temp的大小,如果temp>a[i],则i++,直到遇到第一个temp<a[i],则停止移动,将a[i]赋值给a[j]
五、算法运算步骤为:3、判断i是否等于j,如果不相等则循环1、2步,直到i等于j,则完成一次快速排序。
步骤阅读六、算法解释:这样一次循环做完后结果就是比temp小的尽量放在temp前,比temp大的尽量放在temp后。但是这种顺序不是稳定的,会有调整。因此快速排序不是一种稳定的排序。以下是实现程序。
步骤阅读七、一次排序完之后在分别对temp前的数组元素和temp后的数组元素分别进行快排,直到数组元素个数为1则停止。
步骤阅读八、运行结果如下:
步骤阅读END
注意事项
- 快排用到的挖坑填数和分治法使得其时间复杂度大部分情况下为n*logn,被广泛使用并考察。
0 0
- 快速排序 需熟练使用
- 快速熟练使用numpy(学习笔记)
- 找女朋友(快速排序,还不是很熟练)
- 一小时熟练使用css
- 熟练使用spring Aop
- 熟练使用IText
- 熟练使用Issues
- 熟练使用IText
- 熟练使用thymeleaf
- 熟练使用 LLDB
- 熟练使用IText
- 桶排序和基数排序(熟练掌握代码中结构体的使用trick)
- 排序-快速排序-优化-使用插入排序
- vi命令的熟练使用
- 熟练使用调试器 gdb
- 熟练使用emacs-w3m三部曲
- 熟练使用alert.log日志
- 观察者模式的熟练使用
- Spring/Aop代码总结
- [BZOJ3339] Rmq Problem&&[BZOJ3585] mex
- nsq源码阅读笔记之nsqd(二)——Topic
- RGB-HSV颜色空间
- canvas基础练习(画线)
- 快速排序 需熟练使用
- 怎样才能学精c语言?
- 算法练习1126
- 喝汽水问题
- JAVA经典实例
- Semaphore和SWaitHandle
- 用Java实现基于SOAP的XML文档网络传输及远程过程调用(RPC)
- 数据结构实验之图论八:欧拉回路
- Centos 中文、输入法、快捷键