java快速排序法怎么用
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,本篇内容介绍了"java快速排序法怎么用"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!说明快速排序法
千家信息网最后更新 2025年12月02日java快速排序法怎么用
本篇内容介绍了"java快速排序法怎么用"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
| 说明快速排序法(quick sort)是目前所公认最快的排序方法之一(视解题的对象而定),虽然快速排序法在最差状况下可以达O(n2),但是在多数的情况下,快速排序法的效率表现是相当不错的。 快速排序法的基本精神是在数列中找出适当的轴心,然后将数列一分为二,分别对左边与右边数列进行排序,而影响快速排序法效率的正是轴心的选择。这边所介绍的第一个快速排序法版本,是在多数的教科书上所提及的版本,因为它最容易理解,也最符合轴心分割与左右进行排序的概念,适合对初学者进行讲解。解法这边所介绍的快速演算如下:将最左边的数设定为轴,并记录其值为s 廻圈处理: 令索引i 从数列左方往右方找,直到找到大于s 的数 令索引j 从数列左右方往左方找,直到找到小于s 的数 如果i >= j,则离开回圈 如果i < j,则交换索引i与j两处的值 将左侧的轴与j 进行交换 对轴左边进行递回 对轴右边进行递回 透过以下演算法,则轴左边的值都会小于s,轴右边的值都会大于s,如此再对轴左右两边进行 递回,就可以对完成排序的目的,例如下面的实例,*表示要交换的数,[]表示轴: [41] 24 76* 11 45 64 21 69 19 36* [41] 24 36 11 45* 64 21 69 19* 76 [41] 24 36 11 19 64* 21* 69 45 76 [41] 24 36 11 19 21 64 69 45 76 21 24 36 11 19 [41] 64 69 45 76 在上面的例子中,41左边的值都比它小,而右边的值都比它大,如此左右再进行递回至排序完 成。 #include #include #include #define MAX 10 #define SWAP(x,y) {int t; t = x; x = y; y = t;} void quicksort(int[], int, int); int main(void) { int number[MAX] = {0}; int i, num; srand(time(NULL)); printf("排序前:"); for(i = 0; i < MAX; i++) { number = rand() % 100; printf("%d ", number); } quicksort(number, 0, MAX-1); printf("\n排序后:"); for(i = 0; i < MAX; i++) printf("%d ", number); printf("\n"); return 0; } void quicksort(int number[], int left, int right) { int i, j, s; if(left < right) { s = number[left]; i = left; j = right + 1; while(1) { // 向右找 while(i + 1 < number.length && number[++i] < s) ; // 向左找 while(j -1 > -1 && number[--j] > s) ; if(i >= j) break; SWAP(number, number[j]); } number[left] = number[j]; number[j] = s; quicksort(number, left, j-1); // 对左边进行递回 quicksort(number, j+1, right); // 对右边进行递回 } } |
"java快速排序法怎么用"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
排序
右边
数列
是在
索引
轴心
内容
情况
更多
版本
知识
面的
演算
不错
实用
最差
最快
适当
一分为二
学有所成
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
运营商交流网络安全成果
搜狗软件开发者
python l连接数据库
新华互联网科技系列介绍
远程管理linux数据库
外网访问web服务器
怎么对比不同表格的数据库
戴尔r420服务器尺寸
zabbix数据库表
有信号却显示无法连接到服务器
华为服务器报r01
初中生主题教育网络安全
政府部门网络安全事件应急预案
银行的软件开发师干什么
软件开发需要的书
软件开发专业学什么
网络安全专家张镇
网络安全威胁类型划分依据
天夏科技互联网模式
数据库开发怎么称呼
重庆深度学习软件开发
观致连接不上服务器
软件开发公司实习职位
oracle tb级数据库查询
番组计划数据库
毕马威身份证号不在数据库
网络安全黑板报简笔画ins
A 软件开发开台
数据库中怎样建立表
鹿泉软件开发项目管理