当前位置: 首页 > news >正文

网区建站wordpress实验室模板

网区建站,wordpress实验室模板,门窗网页设计制作,wordpress 优化''普通快排 简介 快速排序是一种高效的排序算法#xff0c;利用分治的思想进行排序。它的基本原理是在待排序的n个数据中任取一个数据为分区标准#xff0c;把所有小于该排序码的数据移到左边#xff0c;把所有大于该排序码的数据移到右边#xff0c;中间放所选记录#x…普通快排 简介 快速排序是一种高效的排序算法利用分治的思想进行排序。它的基本原理是在待排序的n个数据中任取一个数据为分区标准把所有小于该排序码的数据移到左边把所有大于该排序码的数据移到右边中间放所选记录称之为一趟排序。然后对前后两个子序列重复上述过程直到所有记录都排好序。通俗点说大致过程是对于一个无序序列找到一个哨兵数将序列中所有比哨兵数小的数字都移在哨兵数的左边所有比哨兵数大的数字都移在哨兵数的右边然后分别对哨兵数左边和右边再使用同样的方法找到新的哨兵数并再次进行分类直到集合不可分割为止。 过程 实现快速排序的过程大致如下 从数组的中间位置开始取出一个数字作为临时变量然后再从数组的右边开始遍历寻找一个值比临时变量小的数挖出这个数来对上一个坑进行填坑然后从数组前面遍历寻找一个比临时变量大的数填上面的坑。 以上是快速排序的基本步骤需要注意的是在实际的编程实现中还需要处理一些特殊情况例如当待排序数组为空或只有一个元素时。 public class QuickSort { public static void quickSort(int[] arr, int left, int right) { if (left right) { int pivotIndex partition(arr, left, right); quickSort(arr, left, pivotIndex - 1); quickSort(arr, pivotIndex 1, right); } } private static int partition(int[] arr, int left, int right) { int pivot arr[right]; // 选择最右边的数作为哨兵数 int i left - 1; // i指向比哨兵数小的数所在的位置 for (int j left; j right; j) { if (arr[j] pivot) { i; swap(arr, i, j); // 将比哨兵数小的数移到左边 } } swap(arr, i 1, right); // 将哨兵数移到正确的位置上 return i 1; // 返回哨兵数的位置 } private static void swap(int[] arr, int i, int j) { int temp arr[i]; arr[i] arr[j]; arr[j] temp; } } 运行结果 int[] arr {9, 2, 7, 5, 1}; QuickSort.quickSort(arr, 0, arr.length - 1); System.out.println(Arrays.toString(arr)); // 输出 [1, 2, 5, 7, 9] 省下一个变量空间的快排 步骤 这个实现的基本步骤是 选择一个哨兵数这里选择的是数组的第一个元素并将数组分为两部分一部分是小于哨兵数的元素另一部分是大于哨兵数的元素。这个操作由partition函数完成。对小于哨兵数的元素和大于哨兵数的元素分别进行递归排序。也就是说对这两部分再分别调用quickSort函数进行排序。 在partition函数中核心的思路是利用两个指针一个从数组的右边开始向左移动另一个从数组的左边开始向右移动。当左边的指针找到的数小于等于哨兵数而右边的指针找到的数大于哨兵数时交换这两个数。这样经过一段时间后左边的指针就会碰到第一个小于哨兵数的数右边的指针就会碰到第一个大于哨兵数的数。这个时候将哨兵数放到这两个数的中间位置。这样就完成了一趟排序。 详细讲解 让我来为你讲解一下这段Java代码实现的快速排序算法。 首先我们定义了一个名为quickSort的静态方法它接受一个整数数组arr以及两个索引low和high作为参数。这个方法用于对数组的一部分进行排序其中low是起始索引而high是结束索引。 在quickSort方法中我们首先检查low是否小于high。如果不是说明数组已经排好序了我们直接返回。 接下来我们调用partition方法来对数组进行分区。这个方法会选择一个哨兵数然后将数组分为两部分一部分是小于哨兵数的元素另一部分是大于哨兵数的元素。这个过程是通过交换元素的位置来实现的。 然后我们对小于哨兵数的元素和大于哨兵数的元素分别递归调用quickSort方法进行排序。这样我们就可以保证在每一层递归中都比上一层的排序更加精确。 接下来我们来看看partition方法的实现。在这个方法中我们选择数组的最后一个元素作为哨兵数。然后我们使用两个指针一个从数组的左边开始向右移动另一个从数组的右边开始向左移动。当左边的指针找到的数小于等于哨兵数而右边的指针找到的数大于哨兵数时交换这两个数。这样经过一段时间后左边的指针就会碰到第一个小于哨兵数的数右边的指针就会碰到第一个大于哨兵数的数。这个时候将哨兵数放到这两个数的中间位置。这样就完成了一趟排序。 最后返回的是排好序的数组。你可以使用循环遍历输出数组中的每个元素来查看排序结果。 package com.learn;public class QuickSort {public static void main(String[] args) {int[] arr {3, 8, 2, 5, 1, 4, 7, 6};quickSort(arr, 0, arr.length - 1);for (int i : arr) {System.out.print(i );}}public static void quickSort(int[] arr, int low, int high) {if (low high) {int pivotIndex partition(arr, low, high);quickSort(arr, low, pivotIndex - 1);quickSort(arr, pivotIndex 1, high);}}public static int partition(int[] arr, int low, int high) {int pivot arr[low];//会有优化while (low high) {while (low high arr[high] pivot) {high--;}arr[low] arr[high];while (low high arr[low] pivot) {low;}arr[high] arr[low];}arr[low] pivot;return low;} }
http://www.eeditor.cn/news/124295/

相关文章:

  • 网站如何做京东联盟软件开发需要学什么编程语言
  • 网址导航网站一键建设区块链技术做网站
  • 如何看织梦做的网站的源码深圳网站建设龙华新科
  • 做网站用什么字体比较好手机app制作费用
  • 网站域名和邮箱域名解析网站300兆是多少
  • 市网站建设酒店网站建设趋势
  • 商务网站的建设网站分辨率
  • 自己做的网站怎么设置地址国学网站源码
  • 网站建设从零开始教程多用户网站管理系统
  • 东莞微信网站开发wordpress变的很卡
  • 阿里巴巴国际站入口适合发软文的平台
  • 唯美音乐图文网站建设镇江智能网站建设哪家好
  • 怎么写网站建设推广服务器配置参数详解
  • 电商网站设计系统dedecms做中英文网站
  • 佛山个人建站模板百度搜索优化平台
  • 电子商务网站建设调查问卷做网站除了广告还有什么收入的
  • 百色建设局网站个人参与防疫工作总结
  • 电子商务网站的设计要素铜川公司做网站
  • 自考都到哪个网站找题做网页设计与网站建设心得体会
  • 企业网站的形式学做预算有网站吗
  • 企业网站开发创意永久观看不收费的直播
  • 怎么下载自己做的网站wordpress 图片大小设置
  • 建设网站视频素材韩国做美食网站
  • 做电商网站需要做什么准备常州网站建设优化
  • 梨树县住房和城乡建设局网站一个人做商城网站
  • 做公众号时图片的网站w7系统那个网站做的好
  • 图片网站怎么做优化科技公司一般是做什么
  • flash网站引导页面制作公司产品网站
  • 阿里云虚拟主机购买云优化seo
  • 表白网站wordpress 百度软件