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

如何在自己电脑上建设网站做一个卖货的app要多少钱

如何在自己电脑上建设网站,做一个卖货的app要多少钱,律师网站建设公司,影视广告引言 在数据排序的世界里,选择排序是一类简单而直观的算法,它通过不断选取未排序部分中的最小(或最大)元素来逐步构建有序序列。今天,我们将深入探讨两种基于选择思想的排序方法——直接选择排序和堆排序,…
引言

在数据排序的世界里,选择排序是一类简单而直观的算法,它通过不断选取未排序部分中的最小(或最大)元素来逐步构建有序序列。今天,我们将深入探讨两种基于选择思想的排序方法——直接选择排序和堆排序,并提供它们的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://www.yayakq.cn/news/212430/

相关文章:

  • 媒体门户网站建设方案视频拍摄技巧
  • 网站定位广告房源开发网站
  • 网站模版怎么做的律师事务所在线咨询免费
  • 电脑做网站公众号开发合同模板
  • 优秀网页设计网站是什么网站教做医学实验报告
  • 帝国cms手机网站制作国外网站建设模板
  • 做展示型网站便宜吗项城网站
  • 公司网站公众号维护怎么做邹城有做网站的吗
  • 设计网络网站建设网页源代码视频下载链接
  • 专业的网站优化网络科技是做什么的
  • 网站做二级目录跟二级域名的区别使用cms快速搭建商业网站
  • 上海网站建站建设服务聊城网站建设有限公司
  • 如何用网站模板建站上海建筑业网证书查询
  • 网站前瞻性_新流量机会内容建设分析博物馆 网站 建设
  • 免费建站软件旅游网站建设模板下载
  • 有没有做网站的电话合肥网站建设新浪营销
  • 网站建设ipseo前景
  • 武昌做网站jw100网站建设的公司实习做什么
  • 安阳信息港网站中国优秀网站
  • 做毕业证教育网站o2o模式免费ppt模板
  • 网站开发招标文件范本上海做网站的小公司有哪些
  • 教育局两学一做网站wordpress 截取函数
  • 如何优化网站加载速度抖音代运营报价明细表
  • 海尔网站建设的优势服装厂做1688网站效果好不好
  • 学校网站建设阶段性目标做网站的公司利润率是多少
  • 良精企业网站系统高端的饰品行业网站开发
  • 精准客户资源购买梧州seo公司
  • c语言也能干大事网站开发深圳市seo网络推广哪家好
  • 用区块链来做网站阿里云建站中级版和高级版
  • 曲靖seo建站安康市代驾公司