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

建设网站的费用入什么科目信誉好的网站建设

建设网站的费用入什么科目,信誉好的网站建设,做企业网站电话销售话术,小语言网站建设以下是选择排序的详细解析,包含基础实现、常见变体的完整代码示例,以及各变体的对比表格: 一、选择排序基础实现 原理 每一轮遍历未排序部分,找到最小元素并交换到当前起始位置,逐步构建已排序序列。 代码示例 pu…

以下是选择排序的详细解析,包含基础实现、常见变体的完整代码示例,以及各变体的对比表格:
在这里插入图片描述


一、选择排序基础实现

原理

每一轮遍历未排序部分,找到最小元素并交换到当前起始位置,逐步构建已排序序列。

代码示例
public class SelectionSort {void sort(int[] arr) {int n = arr.length;for (int i = 0; i < n - 1; i++) {int minIndex = i; // 记录当前最小值的索引for (int j = i + 1; j < n; j++) {if (arr[j] < arr[minIndex]) {minIndex = j;}}swap(arr, i, minIndex); // 交换当前元素与最小值}}private void swap(int[] arr, int i, int j) {int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}
}
复杂度分析
  • 时间复杂度O(n²)(所有情况)。
  • 空间复杂度O(1)
  • 稳定性:不稳定(相同值的元素可能因交换顺序改变相对位置)。

二、常见变体及代码示例

1. 递归实现

改进点:用递归替代循环,代码结构更清晰。
适用场景:教学或代码风格偏好递归。

public class RecursiveSelectionSort {void sort(int[] arr, int n) {if (n <= 1) return;int minIndex = findMinIndex(arr, 0, n);swap(arr, 0, minIndex); // 将最小值放到首位sort(arr, n - 1); // 递归处理剩余部分}private int findMinIndex(int[] arr, int start, int end) {int minIndex = start;for (int i = start + 1; i < end; i++) {if (arr[i] < arr[minIndex]) {minIndex = i;}}return minIndex;}private void swap(int[] arr, int i, int j) {int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}
}
2. 双向选择排序(鸡尾酒选择排序)

改进点:每一轮同时找到最小和最大元素,并将它们放到正确的位置。
适用场景:数据分布较分散或两端有序,减少比较次数。

public class CocktailSelectionSort {void sort(int[] arr) {int n = arr.length;int start = 0, end = n - 1;while (start < end) {int minIndex = start;int maxIndex = start;for (int i = start; i <= end; i++) {if (arr[i] < arr[minIndex]) minIndex = i;if (arr[i] > arr[maxIndex]) maxIndex = i;}// 交换最小值到起始位置swap(arr, minIndex, start);// 处理最大值交换(避免与最小值冲突)if (maxIndex == start) swap(arr, maxIndex, minIndex);else swap(arr, maxIndex, end);start++;end--;}}private void swap(int[] arr, int i, int j) {int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}
}
3. 优化版(减少比较次数)

改进点:通过减少内层循环次数,将比较次数减半。
适用场景:进一步优化基础实现的性能。

public class OptimizedSelectionSort {void sort(int[] arr) {int n = arr.length;for (int i = 0; i < n / 2; i++) {int minIndex = i;int maxIndex = n - 1 - i;for (int j = i + 1; j <= n - 1 - i; j++) {if (arr[j] < arr[minIndex]) minIndex = j;if (arr[j] > arr[maxIndex]) maxIndex = j;}swap(arr, i, minIndex);if (maxIndex == i) swap(arr, maxIndex, minIndex);else swap(arr, maxIndex, n - 1 - i);}}private void swap(int[] arr, int i, int j) {int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}
}

三、变体对比表格

变体名称时间复杂度空间复杂度稳定性主要特点适用场景
基础选择排序O(n²)O(1)不稳定简单易实现,每轮仅找最小值小规模数据或教学场景
递归实现O(n²)O(n)不稳定递归替代循环,代码结构清晰代码风格偏好或教学场景
双向选择排序(鸡尾酒排序)O(n²)O(1)不稳定每轮同时找最小和最大值,减少比较次数数据分布较分散或两端有序
优化版(减少比较次数)O(n²)O(1)不稳定通过减少内层循环次数提升效率需要轻微优化比较次数的场景

四、关键选择原则

  1. 基础场景:优先使用基础实现,因其简单且适用于小规模数据。
  2. 代码风格:递归实现适合教学或偏好函数式编程的场景,但需注意栈空间开销。
  3. 数据分布:双向选择排序在数据分布较分散时效率略高,但实现复杂度增加。
  4. 稳定性需求:所有变体均不稳定,若需稳定排序需选择其他算法(如归并排序)。
  5. 优化需求:优化版通过减少比较次数,在数据量较大时可略微提升性能。

通过选择合适的变体,可在特定场景下优化代码结构或提升性能(如双向排序减少比较次数),但需权衡实现复杂度与性能收益。


文章转载自:

http://2vX2ewI4.LcpLz.cn
http://T9xPy2Xy.LcpLz.cn
http://QySMCm2K.LcpLz.cn
http://ayvKacH9.LcpLz.cn
http://FjpO0Pqr.LcpLz.cn
http://GXMTSDVy.LcpLz.cn
http://4MsvLluL.LcpLz.cn
http://HhbbTdCB.LcpLz.cn
http://PkMI0qie.LcpLz.cn
http://o9Vx25Qa.LcpLz.cn
http://sQiryg7a.LcpLz.cn
http://V23b2i4U.LcpLz.cn
http://RRgt9y0H.LcpLz.cn
http://o29LURAK.LcpLz.cn
http://fYABRSqh.LcpLz.cn
http://nmfQNQF9.LcpLz.cn
http://nCat8GEW.LcpLz.cn
http://9Ba5RBiP.LcpLz.cn
http://LMUsieXg.LcpLz.cn
http://6AwYWn6l.LcpLz.cn
http://V4Xpsrye.LcpLz.cn
http://2h93Hr2h.LcpLz.cn
http://rwZMJcfO.LcpLz.cn
http://CpExKiJo.LcpLz.cn
http://t9bKX5lZ.LcpLz.cn
http://FhUYVXNI.LcpLz.cn
http://1gtPXdSG.LcpLz.cn
http://h835HC3V.LcpLz.cn
http://988brBEl.LcpLz.cn
http://EjwEnzmz.LcpLz.cn
http://www.dtcms.com/wzjs/699937.html

相关文章:

  • 天津铁路建设投资控股(集团)网站外贸网站需要多少个语言
  • 锦绣江南网站建设seo优化关键词放多少合适
  • 南昌网站建设公司有哪些广东建设业协会网站
  • 苏州手机网站搭建软件开发公司简介模板免费
  • 网站打开文件按钮怎么做网页搜索框的记录怎么删除
  • 国外好看的教育类网站模板下载做网站的价位
  • 海淘网站入口网站流量高有什么用
  • 网站建设一定要域名吗飞创网站建设
  • 手机网站图片宽度wordpress仿QQ看点
  • 用vs做网站的教程淘宝客网站的建设
  • 担路做网站国外一直小猫做图标的网站
  • 天河区网站制作温州网站优化关键词
  • 益阳seo网站建设南通专业网站建设报价
  • 网站建设初学者必学企业网站建设规划的基本原则是什么
  • 米拓模板网站建设做设计那些网站可以卖设计
  • 网站建设前台后台设计成都市建设二维码检测网站
  • 专业邯郸网站建设树莓派网站建设
  • 公主岭网站建设规划wordpress文章直接转html代码
  • 黑客入侵网站怎么做互联网+政务服务平台
  • 建设银行网站怎么注销网银注册小程序
  • 网站推广外包公司网站建设推广价格
  • 网站qq安全认证园林景观设计公司名字
  • 电影网站建设教程链接搜索
  • 淘宝网站建设需求分析视频信号无线传输设备
  • 做网站都去哪里找模板动画设计考研可以考什么专业
  • 小网站发布要怎么做vs网站开发视频教程
  • 中文外贸网站建设如何制作网页内容
  • seo建站平台哪家好百度收录的网站
  • 网络公司如何建网站网站建设报价乱不一
  • 做电影网站用什么cms私人软件开发公司有哪些