学校资源网站建设方案wordpress导入文件格式
web/
2025/9/28 1:10:02/
文章来源:
学校资源网站建设方案,wordpress导入文件格式,网站建设销售方面会遇到的问题,wordpress关闭验证码0 算法简介
快速排序是一种高效率排序算法#xff0c;它是对冒泡排序的一种改进#xff0c;它也是一种不稳定排序算法。快速排序的核心是比较、交换和递归。 在待排序数组中指定一个基准元素pivot#xff08;一般选取数组首元素#xff09;#xff0c;使得数组排序之后基…0 算法简介
快速排序是一种高效率排序算法它是对冒泡排序的一种改进它也是一种不稳定排序算法。快速排序的核心是比较、交换和递归。 在待排序数组中指定一个基准元素pivot一般选取数组首元素使得数组排序之后基准元素左边的所有元素均小于它右边的元素均大于它重复以上过程递归地对左右子集合进行排序。 平均时间复杂度 O(nlogn) 最坏时间复杂度为O(n2)
1 算法步骤 定义一个基准位pivot可选定数组的第一个值比如以左边的低位为基准位array[low]比基准位的值大的放在右边基准位值小的放在左边根据具体的排序需求来 定义两个指针作为哨兵分别为left和right且left right当left right时退出当轮排序。 首先从右边的高位指针right开始向左边遍历直到找到比基准小的元素位置然后从左边的低位开始向右遍历直到找到比基准大的元素位置。 如果指针未相遇则交换左右指针指向的元素位置。如果指针已经相遇即leftright则将基准元素所在的位置与right所在位置的元素进行交换。 重复上述过程递归地对数组左右子集合元素进行排序。
2 用例说明
假设当前有一待排序的数组arr [6,1,2,7,9,3,4,5,10,8]。定义低位指针low 0高位指针high arr,length - 1选取首位为基准元素pivot arr[low]。
首先从右边的高位指针right开始向左边遍历直到找到比基准小的元素位置这里为元素5所在位置。
[6,1,2,7,9,3,4,5,10,8]
从左边的低位开始向右遍历直到找到比基准大的元素位置这里为元素7所在位置。 [6,1,2,7 ,9,3,4,5,10,8]指针未相遇则交换左右指针指向的元素7和元素5的位置。 [6,1,2,5 ,9,3,4,7,10,8] 重读上述步骤得到[6,1,2,5,9,3,4,7,10,8]此时左右指针未相遇继续交换位置。 [6,1,2,5,4,3,9,7,10,8] 当第三次遍历时做哦鱼指针在元素为3的位置上相遇此时结束循环遍历交换基准元素与元素3的位置第一轮排序结束得到以下数组 [3,1,2,5,4,6,9,7,10,8] 可以看到一轮排序之后基准元素左半边的元素值都小于它右半边的元素值都大于它。 通过递归重复上述步骤分别对数组左子集合[3,1,2,5,4]和数组右子集合[9,7,10,8]进行排序。
3 代码实现
public static void quickSort(int[] arr, int low, int high) {// 当low high时表示该序列只有一个元素了不必排序if(low high) {return;}int left low; //定义左哨兵int right high; //定义右哨兵int pivot arr[low]; //定义基准元素一般选择数组的第一个元素while (left right) {//从右边开始遍历 找到右边小于基准元素pivot的元素位置while (left right arr[right] pivot) {right--;}//从左边开始遍历 找到左边大于基准元素pivot的元素位置while (left right arr[left] pivot) {left;}//找到了当前左边大于pivot和右边小于pivot的元素位置 交换这两个元素的位置swap(arr,left,right);}//当left right 说明该轮排序结束最后交换pivot与right位置元素的位置swap(arr, low, right);//递归调用对左子集合和右子集合进行排序//左子集合递归排序quickSort(arr,low, right - 1);//右子集合递归排序quickSort(arr, right 1, high);}//交换数组中两个位置的元素public static void swap(int[] arr, int i, int j) {if (arr.length 0 || j arr.length || i 0) return;int temp arr[i];arr[i] arr[j];arr[j] temp;}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/83059.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!