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

建网站没有公司资质宝安关于网站建设

建网站没有公司资质,宝安关于网站建设,网站开发更新记录,各网站提交入口可以将插入排序类比为整理扑克牌的过程: 左手持已排序的牌(初始为空)右手从桌上未排序的牌堆中逐张取牌将取到的牌插入左手正确位置最终左手持完全有序的牌 前言 一、算法工作原理 插入排序是一种基于比较的简单排序算法,其核心…

可以将插入排序类比为整理扑克牌的过程:

左手持已排序的牌(初始为空)右手从桌上未排序的牌堆中逐张取牌将取到的牌插入左手正确位置最终左手持完全有序的牌


前言

一、算法工作原理

插入排序是一种基于比较的简单排序算法,其核心思想是逐步构建有序序列。算法将待排序数组视为两个部分:已排序部分(初始时仅包含第一个元素)和未排序部分。通过不断从未排序部分取出元素,在已排序部分中找到适当位置插入,最终完成整个数组的排序。

1.2 算法基本特性

特性描述
时间复杂度(最优)O(n) - 当输入数组已经有序时
时间复杂度(最差)O(n²) - 当输入数组完全逆序时
时间复杂度(平均)O(n²)
空间复杂度O(1) - 原地排序,不需要额外存储空间
稳定性稳定 - 相等元素的相对位置不会改变

二、算法详细实现

1. 标准插入排序(从后向前比较插入)

#include <stdio.h>void Sort(int arr[], int n) {for(int i=1;i<n;++i){int k=arr[i];int j=i-1;while(j>=0&&arr[j]>k){arr[j+1]=arr[j];j--;}arr[j+1]=k;// 插入到正确位置}
}
int main() {int arr[] = {12, 9, 7, 5, 6};int n = sizeof(arr) / sizeof(arr[0]);Sort(arr, n);for (int i = 0; i < n; i++) printf("%d ", arr[i]);  // 输出:5,6,7,9,12return 0;
}

初始状态:已排序部分:[12]未排序部分:[11, 13, 5, 6]

第一轮迭代(i=1):key=11,j=0比较:12 > 11 → 后移12 → [12,12,13,5,6]j=-1退出循环插入:arr[0]=11 → [11,12,13,5,6]

第二轮迭代(i=2):key=13,j=1比较:12 < 13 → 不移动直接插入 → [11,12,13,5,6]

第三轮迭代(i=3):key=5,j=2比较:13 > 5 → 后移13 → [11,12,13,13,6]比较:12 > 5 → 后移12 → [11,12,12,13,6]比较:11 > 5 → 后移11 → [11,11,12,13,6]j=-1退出循环插入:arr[0]=5 → [5,11,12,13,6]

第四轮迭代(i=4):key=6,j=3比较:13 > 6 → 后移13 → [5,11,12,13,13]比较:12 > 6 → 后移12 → [5,11,12,12,13]比较:11 > 6 → 后移11 → [5,11,11,12,13]比较:5 < 6 → 停止插入:arr[1]=6 → [5,6,11,12,13]

下面的代码就不过多解释了可以自己看看

2. 交换法插入排序

特点:代码更短,但交换操作比移动更耗时(适用于小数据量)。

void SortSwap(int arr[], int n) 
{for (int i = 1; i < n; i++) {int j = i;// 边比较边交换,类似冒泡while (j > 0 && arr[j] < arr[j - 1]){int temp = arr[j];arr[j] = arr[j - 1];arr[j - 1] = temp;j--;}}
}

这个和冒泡排序没差很多只不过是一直保持i前面的有序

3. 二分查找优化插入排序

int Search(int arr[], int key, int low, int high) {while (low <= high) {int mid = low + (high - low) / 2;if (arr[mid] < key) low = mid + 1;else high = mid - 1;}return low;  // 返回插入位置
}void SortBinary(int arr[], int n){for (int i = 1; i < n; i++){int key = arr[i];int pos = Search(arr, key, 0, i - 1); // 一直往后移动为key提供位置for (int j = i; j > pos; j--){arr[j] = arr[j - 1];}arr[pos] = key;  // 插入}
}

这个就是直接寻找位置然后进行间接插入直到访问到最后一个

4. 递归实现插入排序

void Sort(int arr[], int n, int i) {if (i == n) return;int key = arr[i];int j = i - 1;while (j >= 0 && arr[j] > key) {arr[j + 1] = arr[j];j--;}arr[j + 1] = key;Sort(arr, n, i + 1);
}

这样的递归更好一点比从中间递归要优化许多


总结

插入排序虽然在最坏情况下时间复杂度为O(n²),但其在以下场景表现出色:

小规模数据排序(通常n<50)输入数据基本有序    需要稳定排序且空间受限的环境

算法的简单实现使其成为:算法教学的经典案例复杂排序算法的组成部分特定场景下的高效选择

理解插入排序不仅有助于掌握基础排序技术,也为学习更高级算法(如希尔排序、TimSort等)奠定了基础。在实际工程中,往往需要根据具体数据特征选择合适的排序算法或组合多种排序策略以达到最佳性能


文章转载自:

http://rhjPJob8.njyxj.cn
http://fDBHGIQ3.njyxj.cn
http://JoHzOozG.njyxj.cn
http://DuOrDpGT.njyxj.cn
http://qUBBc1xD.njyxj.cn
http://SRZGgVHI.njyxj.cn
http://UpQdEQe2.njyxj.cn
http://bXuqplTs.njyxj.cn
http://GtRDb5i7.njyxj.cn
http://l4z4ZU4c.njyxj.cn
http://wLlouE9E.njyxj.cn
http://YFstzyjo.njyxj.cn
http://5SZrqyyE.njyxj.cn
http://z2B2k7Qx.njyxj.cn
http://5FCXhOrW.njyxj.cn
http://jbJ5vTw7.njyxj.cn
http://zryCRSkl.njyxj.cn
http://aNAxa5Rl.njyxj.cn
http://PhYHACUR.njyxj.cn
http://mcuwNBW3.njyxj.cn
http://SuQGo1rX.njyxj.cn
http://uXUlwjtN.njyxj.cn
http://AGx1ANUu.njyxj.cn
http://MscjT51t.njyxj.cn
http://Ws1DYIBg.njyxj.cn
http://vclkpw4E.njyxj.cn
http://QIIWnp0E.njyxj.cn
http://5PYrReGk.njyxj.cn
http://8AJhFvCF.njyxj.cn
http://BCBDu2jw.njyxj.cn
http://www.dtcms.com/wzjs/752701.html

相关文章:

  • 涉县企业做网站推广win优化大师有用吗
  • 网站被禁止访问怎么打开免费素材库网
  • 赣州北京网站建设二级域名做很多网站
  • 网站搭建联系方式河南建设工程信息网下载
  • 网站开发书wordpress 数据库设计
  • 沙洋县住房和城乡建设局网站网站的pv是什么
  • 网站广告位怎么做荆门市网站建设
  • 做网站要多少钱呀一个seo良好的网站其主要流量往往来自
  • 江苏省医院网站建设管理规范微信网页版注册
  • 医院网站管理制度苏州工业园区官网
  • 资源下载网站源码wordpress消息系统
  • 如何查看网站是否被百度收录自己建设网站要花多少钱
  • 做网站审批号必须要网站建设技术外包
  • wordpress全站注明WordPress 主页缩略图链接
  • 乐陵网站服务在哪一条房产网站建设价格
  • 新校区建设网站管理规定百度浏览器主页网址
  • 网站网页设计模板下载wordpress显示空白页
  • 工信部 加强网站备案怎样做网站备案
  • 手机网站怎么设置成电脑版的邯郸制作网站的公司
  • 网站安全建设情况报告闵行区网站设计
  • 成都公布最新轨迹秦皇岛网络优化排名
  • 网站建设中如何使用字体2345网址导航怎么卸载
  • 武穴网站建设国外免费域名申请
  • 个人网站建设教程pdfapp设计欣赏
  • 网站动画效果怎么做天津专业网站建设
  • 社区网站 备案wordpress只显示纯文字
  • 自个网站怎么做网站主
  • 百度seo教程网网站运营seo实训总结
  • 重庆科技网站建设网站建成后应该如何推广
  • 1688网站怎么做分销邯郸做淘宝网站