Java算法(回顾)-快速排序
2022/2/23 1:52:23
本文主要是介绍Java算法(回顾)-快速排序,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
import java.util.Arrays; /** * 快速排序-分治思想 * 描述:选择一个基准数,小于基准数的都放在左边,大于基准数的都放在右边。递归直到全部有序。 */ public class QuickSort { public static void main(String[] args){ // 待排序数组 int[] arr = {3, 1, 6, 2, 5, 8, 4}; // 排序结果 quickSort(arr, 0, arr.length-1); System.out.println(Arrays.toString(arr)); } /** * 快速排序 */ public static void quickSort(int[] arr, int sPos, int ePos){ if(sPos > ePos){ return; } // 开始位置 int start = sPos; // 结束位置 int end = ePos; // 基准数设为开始位置对应值 int key = arr[sPos]; while(start != end){ // 从后面开始与基准数比较 while(end > start && arr[end] >= key){ // 比基准值大,结尾位置前移,继续比较直到小于基准值 end--; } // 从前面开始与基准数比较 while(end > start && arr[start] <= key){ // 比基准值大,开始位置后移,继续比较直到大于基准值 start++; } // 交换两个值,比基准数大的放在右边,小的放在左边 if(start < end){ int temp = arr[start]; arr[start] = arr[end]; arr[end] = temp; } } // 基准值放在中间 arr[sPos] = arr[start]; arr[start] = key; // 基准数左边的快排 quickSort(arr, sPos, start - 1); // 基准数右边的快排 quickSort(arr, start + 1, ePos); } }
这篇关于Java算法(回顾)-快速排序的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)