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

西城专业网站建设公司哪家好wordpress无法加载图片

西城专业网站建设公司哪家好,wordpress无法加载图片,关于做网站的,做直播网站软件以下是冒泡排序的详细解析,包含基础实现、常见变体的完整代码示例,以及各变体的对比表格: 一、冒泡排序基础实现 原理 通过重复遍历数组,比较相邻元素并交换逆序对,逐步将最大值“冒泡”到数组末尾。 代码示例 pu…

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


一、冒泡排序基础实现

原理

通过重复遍历数组,比较相邻元素并交换逆序对,逐步将最大值“冒泡”到数组末尾。

代码示例
public class BubbleSort {void sort(int[] arr) {int n = arr.length;for (int i = 0; i < n - 1; i++) {for (int j = 0; j < n - i - 1; j++) {if (arr[j] > arr[j + 1]) {// 交换相邻元素int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}}
}
复杂度分析
  • 时间复杂度
    • 最坏/平均:O(n²)(逆序或随机数据)。
    • 最好(已有序):O(n²)(未优化版本仍需遍历所有元素)。
  • 空间复杂度O(1)
  • 稳定性:不稳定(相同值的元素可能因交换顺序改变相对位置)。

二、常见变体及代码示例

1. 优化版(带标志位)

改进点:通过标志位检测是否提前终止循环,减少无意义遍历。
适用场景:接近有序的数据(如已排序数组)。

public class OptimizedBubbleSort {void sort(int[] arr) {int n = arr.length;boolean swapped;for (int i = 0; i < n - 1; i++) {swapped = false;for (int j = 0; j < n - i - 1; j++) {if (arr[j] > arr[j + 1]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;swapped = true;}}// 若某轮未交换,说明已有序,提前终止if (!swapped) break;}}
}
2. 鸡尾酒排序(双向冒泡)

改进点:从两端交替扫描,同时将最大值和最小值归位。
适用场景:数据分布较分散或两端有序。

public class CocktailSort {void sort(int[] arr) {int n = arr.length;boolean swapped = true;int start = 0, end = n - 1;while (swapped) {swapped = false;// 向右扫描,将最大值移到末尾for (int i = start; i < end; i++) {if (arr[i] > arr[i + 1]) {swap(arr, i, i + 1);swapped = true;}}if (!swapped) break;swapped = false;end--;// 向左扫描,将最小值移到开头for (int i = end - 1; i >= start; i--) {if (arr[i] > arr[i + 1]) {swap(arr, i, i + 1);swapped = true;}}start++;}}private void swap(int[] arr, int i, int j) {int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}
}
3. 递归实现

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

public class RecursiveBubbleSort {void sort(int[] arr, int n) {if (n == 1) return;for (int i = 0; i < n - 1; i++) {if (arr[i] > arr[i + 1]) {swap(arr, i, i + 1);}}sort(arr, n - 1);}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(1)不稳定提前终止循环,减少无意义遍历接近有序的数据(如已排序数组)
鸡尾酒排序O(n²)(平均/最坏),
O(n)(最好)
O(1)不稳定双向扫描,同时归位最大和最小值数据分布较分散或两端有序
递归实现O(n²)(所有情况)O(n)不稳定递归替代循环,代码结构清晰代码风格偏好或教学场景

四、关键选择原则

  1. 基础场景:优先使用优化版(带标志位),在有序数据时效率显著提升。
  2. 双向优化:鸡尾酒排序适用于数据分布较分散的场景,减少比较次数。
  3. 递归实现:仅用于教学或代码风格需求,因递归增加栈空间开销。
  4. 稳定性需求:所有变体均不稳定,若需稳定排序需选择其他算法(如插入排序或归并排序)。
  5. 极端场景:小规模数据(如 n < 10)时,所有变体均可接受,优先选择简单实现。

通过选择合适的变体,可在特定场景下有效提升冒泡排序的效率或代码可读性。

http://www.dtcms.com/wzjs/798642.html

相关文章:

  • 江西省建设局网站安装2个wordpress
  • 临沧网站制作视频网站如何推广
  • 网站建设网站规划书wordpress显示文章图片
  • 盘锦微商网站建设网络推广网站
  • js制作网页制作步骤广州 网站优化
  • 小精灵儿童网站免费做踢网站域名备案查询
  • 指定网站长期建设 运营计划大港做网站
  • 网站开发方式有外包网站开发移动端
  • 有哪些做废品的网站有哪些可以免费做高数题的网站
  • 做网站的前端是做什么dede查看网站
  • 行业门户网站是什么外贸圈阿里巴巴
  • 如何做百度秒收录网站c 做网站怎么发布
  • 招标网站官网网络推广哪个平台效果最好
  • 网站建设公司新报价上虞区驿亭镇新农村建设网站
  • 如何给别人做网站挣钱网站建站定做
  • 智能网站建设系统网络广告营销的实现方式
  • flash企业网站安徽网站优化价格咨询
  • 合肥网站建设百家号如何找网站推广
  • 做网站网站盈利会怎么样网页图片居中
  • 如何查询一个网站是否备案深圳网站建设案
  • 织梦网站问题网站进行内容设计时首先应该( ).
  • wordpress开发ide橘子seo
  • 自己做网站怎么推广深圳创业补贴咨询电话
  • 如何用服务器代替空间做网站拓者设计
  • 两个网站互相做外链求一个dw做的网站
  • 做网站只买一个程序宁波网站推广公司报价
  • 套别人代码做网站网站缺陷和优化的例子
  • 淮安市做网站的公司重庆个人网站建设
  • 佛山骏域网站建设专家网站添加新闻
  • 怎么做舞曲网站网站开发维护工作