Java排序算法之怎么实现快速排序的三数取中法
发表于:2025-02-06 作者:千家信息网编辑
千家信息网最后更新 2025年02月06日,这篇文章主要讲解了"Java排序算法之怎么实现快速排序的三数取中法",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Java排序算法之怎么实现快速排序的三
千家信息网最后更新 2025年02月06日Java排序算法之怎么实现快速排序的三数取中法
这篇文章主要讲解了"Java排序算法之怎么实现快速排序的三数取中法",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Java排序算法之怎么实现快速排序的三数取中法"吧!
基本步骤
三数取中
在快排的过程中,每一次我们要取一个元素作为枢纽值,以这个数字来将序列划分为两部分。在此我们采用三数取中法,也就是取左端、中间、右端三个数,然后进行排序,将中间数作为枢纽值。
根据枢纽值进行分割
代码实现
package sortdemo;import java.util.Arrays;/** * Created by chengxiao on 2016/12/14. * 快速排序 */public class QuickSort { public static void main(String[] args) { int[] arr = {9, 8, 7, 6, 5, 4, 3, 2, 1, 0}; quickSort(arr, 0, arr.length - 1); System.out.println("排序结果:" + Arrays.toString(arr)); } /** * @param arr * @param left 左指针 * @param right 右指针 */ public static void quickSort(int[] arr, int left, int right) { if (left < right) { //获取枢纽值,并将其放在当前待处理序列末尾 dealPivot(arr, left, right); //枢纽值被放在序列末尾 int pivot = right - 1; //左指针 int i = left; //右指针 int j = right - 1; while (true) { while (arr[++i] < arr[pivot]) { } while (j > left && arr[--j] > arr[pivot]) { } if (i < j) { swap(arr, i, j); } else { break; } } if (i < right) { swap(arr, i, right - 1); } quickSort(arr, left, i - 1); quickSort(arr, i + 1, right); } } /** * 处理枢纽值 * * @param arr * @param left * @param right */ public static void dealPivot(int[] arr, int left, int right) { int mid = (left + right) / 2; if (arr[left] > arr[mid]) { swap(arr, left, mid); } if (arr[left] > arr[right]) { swap(arr, left, right); } if (arr[right] < arr[mid]) { swap(arr, right, mid); } swap(arr, right - 1, mid); } /** * 交换元素通用处理 * * @param arr * @param a * @param b */ private static void swap(int[] arr, int a, int b) { int temp = arr[a]; arr[a] = arr[b]; arr[b] = temp; }}
排序结果
[1, 2, 3, 4, 5, 6, 7, 8]
感谢各位的阅读,以上就是"Java排序算法之怎么实现快速排序的三数取中法"的内容了,经过本文的学习后,相信大家对Java排序算法之怎么实现快速排序的三数取中法这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
排序
中法
枢纽
算法
指针
序列
学习
元素
内容
末尾
结果
处理
个数
也就是
代码
就是
思路
情况
数字
文章
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
滦南软件开发品质保障
贵州工业服务器云主机
向日葵远控用自己的服务器
为什么要装打印服务器
没有完备数据库的组织
天津网络技术服务采购
数据库事务 并发更新新
互联网e 健身科技有限公司
智能控制系统嵌入式软件开发
微软云服务器百度百科
计算机网络技术服务外包专业
简述软件开发过程中
客运汽车站网络安全
三国志战略版怎么进一个服务器
深圳市珠峰软件开发
上海信息软件开发定制收费
挑战答题王 数据库
数据库 属性 字段
网络技术基础演示互动
开设网络安全专业的所有高校
山东省第三届网络安全大赛
深圳周边网络技术
城域网需要学习哪些网络技术
贴吧数据库
中拓一心互联网科技有限公司
济南服务器运维管理系统公司
软件开发纳税人类型是什么
sonar 数据库配置
奇安网络安全创业
如何共享服务器上的金蝶软件