选择排序——快速排序
发布日期:2021-09-28 18:46:39
浏览次数:6
分类:技术文章
本文共 1494 字,大约阅读时间需要 4 分钟。
快速排序是一个速度非常快的交换排序方式,他的实现思路就是选取一个元素作为分界值,将数组小于分界值的元素排列在左边,大于分界值的元素排列在右边。然后多次递归后得出完成排序的数组。
package com.h3c.paixu;public class 快速排序Demo { public static void main(String[] args) { // 1. 初始化一个无序数组 int[] myArr = { 23, 35, 73, 27, 4, 77, 54, 84, 47, 56, 34, 32, 75, 32, 31, 0, 99, 7, 54, 57 }; myArr = 快速排序(myArr); for (int i : myArr) { System.out.print(i + " "); } } private static int[] 快速排序(int[] myArr) { int i = 1;// 左边的index int j = myArr.length - 1;// 右边的index int 分界值index = 0; int 分界值 = myArr[0]; while (true) { // 1.找到左边第一个大于分界值的index for (; i < myArr.length; i++) { if (myArr[分界值index] < myArr[i]) { break; } } // 2.找到右边第一个小于分界值的index for (; j > 0; j--) { if (myArr[分界值index] > myArr[j]) { break; } } // 3.如果i > j则交换元素后继续,否则结束 if (i < j) { int tempValue = myArr[i]; myArr[i] = myArr[j]; myArr[j] = tempValue; } else { break; } } // 4.将所有小于分界值的数组与所有大于分界值的数组递归排序 int[] leftArr = new int[j]; for (int n = 0; n < leftArr.length; n++) { leftArr[n] = myArr[n + 1]; } if (leftArr.length > 1) { leftArr = 快速排序(leftArr); } int[] rightArr = new int[myArr.length - i]; for (int k = 0, n = i; k < rightArr.length; k++, n++) { rightArr[k] = myArr[n]; } if (rightArr.length > 1) { rightArr = 快速排序(rightArr); } // 5.组合排序后的数组 for (int n = 0; n < leftArr.length; n++) { myArr[n] = leftArr[n]; } myArr[j] = 分界值; for (int n = 0, k = i; n < rightArr.length; n++, k++) { myArr[k] = rightArr[n]; } return myArr; }}
转载地址:https://blog.csdn.net/h3c4lenovo/article/details/8579404 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
很好
[***.229.124.182]2024年03月12日 14时39分57秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
android日期选择区间控件_Android时间区间的选择
2019-04-21
lin通讯从节点同步间隔场_LIN模块介绍
2019-04-21
mysql注入提取邮件_Mysql提取数据每日自动邮件通知
2019-04-21
mysql 列权限_mysql 权限相关
2019-04-21
python入门之基础语法第四关输入输出答案_Python基本语法入门,基础
2019-04-21
unity wsad 鼠标_Unity键盘WASD实现物体移动
2019-04-21
mysql创建密码服务断开_MySQL连接与断开服务器 | 学步园
2019-04-21
python多进程间通信_PYTHON——多进程:进程间通信和数据共享
2019-04-21
mysql在存储过程仍_mysql存储过程
2021-06-24
java getfield_Java Class getField()用法及代码示例
2021-06-24
java rmi 实例_JAVA RMI 实例
2021-06-24
java的bin目录_JDK的bin目录下那些常见工具使用集锦
2021-06-24
java 圆桌_圆桌问题 - Acm_walker - 博客园
2021-06-24