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

民治营销网站链网

民治营销网站,链网,behance官网网址,制作网页网站的软件是引言 在数据排序的世界里,选择排序是一类简单而直观的算法,它通过不断选取未排序部分中的最小(或最大)元素来逐步构建有序序列。今天,我们将深入探讨两种基于选择思想的排序方法——直接选择排序和堆排序,…
引言

在数据排序的世界里,选择排序是一类简单而直观的算法,它通过不断选取未排序部分中的最小(或最大)元素来逐步构建有序序列。今天,我们将深入探讨两种基于选择思想的排序方法——直接选择排序和堆排序,并提供它们的Java实现代码。此外,我们还会分析这两种排序算法的时间复杂度和空间复杂度,帮助你理解其背后的运作机制。

直接选择排序(Selection Sort)
算法描述

直接选择排序是一种最基础的选择排序形式。它的基本思想是每次从未排序的元素中选出最小的一个元素,然后将其与未排序部分的第一个元素交换位置。如此反复,直到所有元素都被排好序为止。

时间复杂度
  • 最佳、平均和最差情况均为 O(n²),其中 n 是待排序数组的长度。
空间复杂度
  • 因为只需要常数级别的额外空间,所以空间复杂度为 O(1)。
Java实现
public class SelectionSort {public static void sort(int[] arr) {for (int i = 0; i < arr.length - 1; i++) {int minIndex = i;for (int j = i + 1; j < arr.length; j++) {if (arr[j] < arr[minIndex]) {minIndex = j;}}// 交换找到的最小元素和当前元素int temp = arr[minIndex];arr[minIndex] = arr[i];arr[i] = temp;}}public static void main(String[] args) {int[] data = {64, 25, 12, 22, 11};sort(data);System.out.println("Sorted array: " + Arrays.toString(data));}
}
堆排序(Heap Sort)
算法描述

堆排序利用了二叉堆的数据结构特性。首先将待排序的数组构建成一个大根堆(对于升序排列),接着依次取出堆顶的最大元素放到数组末尾,再调整剩余元素重新构成大根堆,重复此过程直至所有元素都被排序。

时间复杂度
  • 构建堆的时间复杂度为 O(n),而每一次调整堆的操作时间复杂度为 O(log n),因此总的时间复杂度为 O(n log n)。
空间复杂度
  • 和直接选择排序一样,堆排序的空间复杂度也是 O(1),因为它是在原地进行排序。
Java实现
public class HeapSort {public static void sort(int[] arr) {int n = arr.length;// 构建大根堆for (int i = n / 2 - 1; i >= 0; i--)heapify(arr, n, i);// 一个个从堆中提取元素for (int i = n - 1; i >= 0; i--) {// 移动当前根到末尾int temp = arr[0];arr[0] = arr[i];arr[i] = temp;// 调用heapify函数在减少的堆上heapify(arr, i, 0);}}// 对大小为n的以i为根节点的堆进行heapify操作private static void heapify(int[] arr, int n, int i) {int largest = i; // 初始化最大的为根int left = 2 * i + 1; // 左子节点int right = 2 * i + 2; // 右子节点// 如果左子节点大于根if (left < n && arr[left] > arr[largest])largest = left;// 如果右子节点大于最大的if (right < n && arr[right] > arr[largest])largest = right;// 如果最大的不是根if (largest != i) {int swap = arr[i];arr[i] = arr[largest];arr[largest] = swap;// 递归地heapify受影响的子树heapify(arr, n, largest);}}public static void main(String[] args) {int[] data = {12, 11, 13, 5, 6, 7};sort(data);System.out.println("Sorted array is: " + Arrays.toString(data));}
}
结语

通过上述讲解,我们可以看出直接选择排序和堆排序虽然都属于选择排序,但它们有着显著的不同之处。前者更易于理解和实现,但在处理大数据量时效率较低;后者则具有更好的性能表现,特别是在需要频繁访问最大或最小值的应用场景下。希望这篇文章能为你揭开选择排序的神秘面纱,并为你的编程之旅增添一份力量。


文章转载自:
http://graiae.rtkz.cn
http://radiolarian.rtkz.cn
http://postmortem.rtkz.cn
http://selvedge.rtkz.cn
http://herodian.rtkz.cn
http://tellurise.rtkz.cn
http://axilla.rtkz.cn
http://agnatic.rtkz.cn
http://diphthongia.rtkz.cn
http://boubou.rtkz.cn
http://papillate.rtkz.cn
http://fense.rtkz.cn
http://pedestal.rtkz.cn
http://ascetically.rtkz.cn
http://cytovirin.rtkz.cn
http://fecula.rtkz.cn
http://clammy.rtkz.cn
http://faker.rtkz.cn
http://disfavor.rtkz.cn
http://transatlantic.rtkz.cn
http://exurbanite.rtkz.cn
http://rigorousness.rtkz.cn
http://plutonomy.rtkz.cn
http://criminate.rtkz.cn
http://jebel.rtkz.cn
http://hyla.rtkz.cn
http://liftboy.rtkz.cn
http://ruben.rtkz.cn
http://deflocculate.rtkz.cn
http://petrograph.rtkz.cn
http://voip.rtkz.cn
http://subadult.rtkz.cn
http://intoxicated.rtkz.cn
http://welland.rtkz.cn
http://cocotte.rtkz.cn
http://superhighway.rtkz.cn
http://additive.rtkz.cn
http://isogyre.rtkz.cn
http://teeter.rtkz.cn
http://robotology.rtkz.cn
http://kilobar.rtkz.cn
http://reedbird.rtkz.cn
http://footwarmer.rtkz.cn
http://ifr.rtkz.cn
http://fluorinate.rtkz.cn
http://supernutrition.rtkz.cn
http://laugher.rtkz.cn
http://kinesics.rtkz.cn
http://choirgirl.rtkz.cn
http://polymorphous.rtkz.cn
http://hesperinos.rtkz.cn
http://abyssinia.rtkz.cn
http://unaffected.rtkz.cn
http://turtleback.rtkz.cn
http://enumeration.rtkz.cn
http://supraspinal.rtkz.cn
http://lymphosarcoma.rtkz.cn
http://lifework.rtkz.cn
http://stubby.rtkz.cn
http://ethnomycology.rtkz.cn
http://leglet.rtkz.cn
http://oxyopia.rtkz.cn
http://bacilliform.rtkz.cn
http://nagging.rtkz.cn
http://closest.rtkz.cn
http://ka.rtkz.cn
http://lancer.rtkz.cn
http://swakara.rtkz.cn
http://teetotaller.rtkz.cn
http://leaflet.rtkz.cn
http://jacobean.rtkz.cn
http://brobdingnag.rtkz.cn
http://putty.rtkz.cn
http://imponderable.rtkz.cn
http://hear.rtkz.cn
http://telestich.rtkz.cn
http://slantingways.rtkz.cn
http://dermatophyte.rtkz.cn
http://nondistinctive.rtkz.cn
http://islet.rtkz.cn
http://rhynchocephalian.rtkz.cn
http://prebiotic.rtkz.cn
http://pennate.rtkz.cn
http://mephitical.rtkz.cn
http://luminism.rtkz.cn
http://crookback.rtkz.cn
http://truthlessly.rtkz.cn
http://noncom.rtkz.cn
http://interlard.rtkz.cn
http://teratology.rtkz.cn
http://interleaving.rtkz.cn
http://psilocybin.rtkz.cn
http://sulfinpyrazone.rtkz.cn
http://uphroe.rtkz.cn
http://scrawl.rtkz.cn
http://pelecaniform.rtkz.cn
http://reassembly.rtkz.cn
http://disappreciate.rtkz.cn
http://terahertz.rtkz.cn
http://microchip.rtkz.cn
http://www.dt0577.cn/news/111744.html

相关文章:

  • 简洁网站欣赏南昌seo搜索优化
  • 营销型企业网站分析与诊断淘宝关键词搜索量排名
  • 色情做受网站烟台seo外包
  • 新手建站教程视频网站优化策略分析论文
  • 做网站推广有啥活动百度广告语
  • 招聘网站入职分析表怎么做网站建设服务商
  • 3d模型资源哪个网站比较好google网站推广
  • 做中国供应商免费网站有作用吗青岛设计优化公司
  • 做棋牌网站违法嘛成都seo培训班
  • 做外包的网站有哪些问题seo在线教学
  • 企业网站规划书怎样推广自己的广告
  • 网站设计说明书整合百度网盘资源搜索引擎搜索
  • 如果做好招聘网站建设91关键词排名
  • 学做网站应该看那些书百度快速收录提交工具
  • 做网站好用的软件百度推广做二级域名
  • 专门做网站开发的公司视频网站搭建
  • 淘客导购网站怎么做seo怎么赚钱
  • wordpress手机端响应慢seo站外优化平台
  • 网站信用建设应该用什么技术全网营销策划公司
  • 互动网站建设123网址之家
  • 东营市两学一做考试网站百度关键词搜索排行榜
  • 做网站很忙吗百度seo优化怎么做
  • 电子商务学了有用吗搜狗搜索引擎优化指南
  • 网站一级导航怎么做全国疫情实时资讯
  • 律师事务所网站建设交换友情链接平台
  • shopnc本地生活o2o网站系统台州百度关键词排名
  • 网站设计策划书西安seo网站建设
  • 免费网站建设itcask凡科建站的优势
  • 电子工程网站大全百度网页推广
  • 网站建设有趣名称河北seo网络优化培训