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

机械设备东莞网站建设石家庄开发区网站建设

机械设备东莞网站建设,石家庄开发区网站建设,建设一个网站需要什么人员,厦门网站建设哪家不错文章目录 常见排序算法详解:冒泡排序、选择排序与插入排序1. 冒泡排序(Bubble Sort)1.1 基本原理1.2 时间复杂度1.3 空间复杂度1.4 稳定性1.5 Java 实现示例 2. 选择排序(Selection Sort)2.1 基本原理2.2 时间复杂度2.…

文章目录

  • 常见排序算法详解:冒泡排序、选择排序与插入排序
    • 1. 冒泡排序(Bubble Sort)
      • 1.1 基本原理
      • 1.2 时间复杂度
      • 1.3 空间复杂度
      • 1.4 稳定性
      • 1.5 Java 实现示例
    • 2. 选择排序(Selection Sort)
      • 2.1 基本原理
      • 2.2 时间复杂度
      • 2.3 空间复杂度
      • 2.4 稳定性
      • 2.5 Java 实现示例
    • 3. 插入排序(Insertion Sort)
      • 3.1 基本原理
      • 3.2 时间复杂度
      • 3.3 空间复杂度
      • 3.4 稳定性
      • 3.5 Java 实现示例
    • 4. 总结
      • 4.1 各算法特点对比
      • 4.2 适用场景

常见排序算法详解:冒泡排序、选择排序与插入排序

排序算法是计算机科学中的基础问题之一,广泛应用于各种场景。本文将详细介绍三种常见的简单排序算法:冒泡排序选择排序插入排序。这些算法虽然在处理大规模数据时效率不如更复杂的算法(如快速排序、归并排序),但它们易于理解和实现,非常适合初学者学习和理解排序的基本原理。

1. 冒泡排序(Bubble Sort)

在这里插入图片描述

1.1 基本原理

冒泡排序通过重复地遍历要排序的列表,依次比较相邻的元素并交换它们的位置,使得每一轮遍历后最大的元素逐渐“冒泡”到列表的一端。

步骤

  1. 从数组的第一个元素开始,依次比较相邻的两个元素。
  2. 如果前一个元素大于后一个元素,则交换这两个元素的位置。
  3. 重复上述过程,直到没有需要交换的元素为止。

1.2 时间复杂度

  • 最好情况:O(n) (已经有序的情况)
  • 平均和最坏情况:O(n^2)

1.3 空间复杂度

  • O(1) (原地排序)

1.4 稳定性

  • 稳定(相同值的相对位置不会改变)

1.5 Java 实现示例

public static void bubbleSort(int[] arr) {for (int i = 1; i < arr.length; i++) {int length = arr.length - i;boolean swap = false;for (int j = 0; j < length; j++) {// 交换元素以便将较大的元素冒泡if(arr[j] > arr[j + 1]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;swap = true;}}if(!swap) {break;}}
}

2. 选择排序(Selection Sort)

2.1 基本原理

选择排序每次从未排序部分中选出最小(或最大)的元素,并将其放到已排序部分的末尾。

步骤

  1. 从未排序部分中找到最小的元素。
  2. 将该元素与未排序部分的第一个元素交换位置。
  3. 重复上述过程,直到整个数组排序完成。

2.2 时间复杂度

O(n^2)

2.3 空间复杂度

O(1) (原地排序)

2.4 稳定性

不稳定(相同值的相对位置可能会改变)

2.5 Java 实现示例

public static void selectSort(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[minIndex] > arr[j]) {minIndex = j;}}// 把最小元素挪到当前正确位置if(minIndex > i) {int temp = arr[i];arr[i] = arr[minIndex];arr[minIndex] = temp;}}
}

3. 插入排序(Insertion Sort)

3.1 基本原理

插入排序通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

步骤

  1. 从第二个元素开始遍历数组。
  2. 将当前元素与前一个元素进行比较,如果当前元素小于前一个元素,则交换它们的位置,并继续向前比较,直到找到正确的位置。
  3. 对每个元素重复上述步骤,直到整个数组排序完成。

3.2 时间复杂度

  • 最好情况:O(n) (已经有序的情况)
  • 平均和最坏情况:O(n^2)

3.3 空间复杂度

O(1) (原地排序)

3.4 稳定性

稳定(相同值的相对位置不会改变)

3.5 Java 实现示例

public static void insertSort(int[] arr) {for (int i = 1; i < arr.length; i++) {int j = i;int key = arr[i];// 比当前元素大的数往右移动while(j > 0 && key < arr[j - 1]) {arr[j] = arr[j - 1];j --;}arr[j] = key;}
}

4. 总结

4.1 各算法特点对比

排序算法时间复杂度(最好)时间复杂度(平均)时间复杂度(最坏)空间复杂度稳定性
冒泡排序O(n)O(n^2)O(n^2)O(1)稳定
选择排序O(n^2)O(n^2)O(n^2)O(1)不稳定
插入排序O(n)O(n^2)O(n^2)O(1)稳定

4.2 适用场景

冒泡排序 和 选择排序 适合小规模数据集或几乎已排序的数据集。
插入排序 在数据量较小或几乎已排序的情况下表现良好。

尽管这些排序算法在处理大规模数据时效率不如更复杂的算法,但它们的简单性和直观性使其成为初学者理解排序原理的理想选择。

http://www.dtcms.com/a/414040.html

相关文章:

  • 代制作网站公司网站建设包括
  • 怎么手动安装网站程序搭建微信小程序
  • 郑州建网站371怎么把东西发布到网上卖
  • wordpress 点图片链接拼多多seo怎么优化
  • 石家庄做网站wordpress 文章摘要
  • 网站建设服务类型现状做兼职上哪个网站
  • 重庆网站seo排名用dw制作一个网站
  • 太原模板建站定制深圳网站建设及推广
  • vps 网站 需要绑定域名吗建设部网站拆除资质
  • 六安网站自然排名优化价格遵义网站建设网帮你
  • 网站版面设计流程包括哪些盐城手机网站建设
  • 重庆网站搭建昆明网站建设报价
  • 设计制作网站的公司深圳全网整合营销
  • 辽宁建设厅查询网站首页怎么给自己的网站做优化
  • 专业集团门户网站建设方案两学一做网站飘窗
  • 专业做蛋糕视频网站东莞建筑公司招聘信息
  • 天水市建设银行官方网站住房和城乡建设部政务服务门户
  • seo建站网络公司wordpress加速访问
  • 大型网站制作费用表南昌网站建设模板技术公司
  • 网站怎样做301温州科技网站建设
  • 网站可信品牌推广广告
  • 网站建设技术和销售工资北京网站建设公司哪家实惠
  • 做网站要会写什么软件电商网站的建设案例
  • 做黄金的网站未来做那个网站能致富
  • vue做门户网站用什么ui公众号如何制作
  • 张梅 合肥网站建设办公网站建设方案
  • 创造力网站设计怎么申请自己的小程序
  • 网站建设项目分析报告wordpress的标签设置
  • 数码产品在哪里做网站牛商网网站建设
  • 在别的公司做的网站可以转走吗郑州前端培训机构