java快速排序法怎么用
发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,本篇内容介绍了"java快速排序法怎么用"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!说明快速排序法
千家信息网最后更新 2025年02月03日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安全错误
数据库的锁怎样保障安全
ipad上登录腾讯云服务器
普陀区网络软件开发制品价格
从c语言到软件开发
服务器c000021a蓝屏
网络安全三审三校
校园网络安全活动主题征文
奇益爷爷互联网科技
软件开发军标新产品试制
电脑服务器类别在哪
网络技术试岗鉴定表
删除我的世界后服务器存档存在吗
衢州嵌入式软件开发自学步骤
csgo服务器管理员权限
住建部数据库
网络安全服务合作流程
株洲网络安全活动
微信云端数据库保存多久
lol 职业选手数据库
滨州平台软件开发
深圳oa软件开发公司
嵩明正规软件开发报价表
维纶通配方数据库
新吴区智能化软件开发概念
实验小学网络安全总结
香港服务器选择
电商网销绩效指标数据库
无线网络安全分析
上海品质网络技术信息推荐
数据库开发技术语言
阿里云linux系统服务器配置