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

怎么查看网站是用什么系统做的建设网站用图片需要版权

怎么查看网站是用什么系统做的,建设网站用图片需要版权,wordpress 获取当前文章的id,wordpress3.0 主题目录 概要 整体架构流程 技术名词解释 代码实现 1、直接插入排序 2、折半插入排序 3、希尔排序 小结 概要 插入排序是一种简单直观的排序算法,适用于小规模数据或部分有序的数据集。它的工作原理类似于整理扑克牌,通过构建有序序列,对…

目录

概要

整体架构流程

技术名词解释

代码实现

1、直接插入排序

2、折半插入排序

3、希尔排序

小结


 概要

        插入排序是一种简单直观的排序算法,适用于小规模数据或部分有序的数据集。它的工作原理类似于整理扑克牌,通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

整体架构流程

插入排序的基本流程如下:

  1. 初始化:从第二个元素开始,假设第一个元素已经是有序的。

  2. 比较与插入:将当前元素与已排序部分的元素从后向前比较,找到合适的位置插入。

  3. 重复:重复上述步骤,直到所有元素都被排序。

技术名词解释

  • 直接插入排序:最基本的插入排序,逐个比较并插入。

  • 折半插入排序:在查找插入位置时使用二分查找,减少比较次数。

  • 希尔排序:通过分组进行插入排序,逐步缩小分组间隔,最终完成排序。

代码实现

这里有三种实现方式,分别为直接插入排序、折半插入排序和希尔排序,其中main函数定义了一个测试数组,调用插入排序函数并输出结果。代码的每一步操作都有详细的注释。

1、直接插入排序

#include <stdio.h>
#include <stdlib.h>typedef struct SqList {int* arr;int length;
} SqList;// 直接插入排序
void insertSort(SqList list) {// 两个计数器int i = 0;int j = 0;for (i = 2; i <= list.length; i++) {// 检查是否需要排序if (list.arr[i] < list.arr[i - 1]) {list.arr[0] = list.arr[i]; // 复制为哨兵for (j = i - 1; list.arr[j] > list.arr[0]; j--) {list.arr[j + 1] = list.arr[j]; // 后移元素}list.arr[j + 1] = list.arr[0]; // 插入到正确位置}}
}int main() {// 初始化数据SqList list;list.length = 10;list.arr = calloc(list.length + 1, sizeof(int));// 输入int i = 0;for (i = 1; i <= list.length; i++) {scanf("%d", list.arr + i);}insertSort(list); // 排序// 输出for (i = 1; i <= list.length; i++) {printf("%d ", list.arr[i]);}return 0;
}

2、折半插入排序

#include <stdio.h>
#include <stdlib.h>typedef struct SqList {int* arr;int length;
} SqList;// 折半插入排序
void insertSort(SqList list) {// 两个计数器int i = 0;int j = 0;for (i = 2; i <= list.length; i++) {// 检验是否需要排序if (list.arr[i - 1] > list.arr[i]) {list.arr[0] = list.arr[i]; // 复制为哨兵int left = 1;int right = list.length;int mid = (right - left) / 2 + left;// 寻找要插入的位置while (left <= right) {mid = (right - left) / 2 + left;if (list.arr[0] > list.arr[mid]) {left = mid + 1;}else{right = mid - 1;}}// 插入操作for (j = i - 1; j > right + 1; j--) {list.arr[j + 1] = list.arr[j]; // 后移元素}list.arr[right + 1] = list.arr[0]; // 插入到正确位置}}
}int main() {// 初始化数据SqList list;list.length = 10;list.arr = calloc(list.length + 1, sizeof(int));// 输入int i = 0;for (i = 1; i <= list.length; i++) {scanf("%d", list.arr + i);}insertSort(list); // 排序// 输出for (i = 1; i <= list.length; i++) {printf("%d ", list.arr[i]);}return 0;
}

3、希尔排序

#include <stdio.h>
#include <stdlib.h>typedef struct SqList {int* arr;int length;
} SqList;// 每一趟的操作
void shellInsert(SqList list, int dk) {// 两个计数器int i = 0;int j = 0;for (i = dk + 1; i <= list.length; i++) {// 判断是否需要排序if (list.arr[i] < list.arr[i - dk]) {list.arr[0] = list.arr[i]; // 复制为哨兵// 开始排序for (j = i - dk; (j > 0) && (list.arr[j] > list.arr[0]); j -= dk) {list.arr[j + dk] = list.arr[j];}list.arr[j + dk] = list.arr[0]; // 插入到正确位置}}
}void shellSort(SqList list, int dlta[], int t) {// 按增量序列 dlta 对顺序表 list 作希尔排序int i = 0;for (i = 0; i < t; i++) {shellInsert(list, dlta[i]); // 一趟增量为 dlta[i] 的插入排序}
}int main() {// 初始化数据SqList list;list.length = 10;list.arr = calloc(list.length + 1, sizeof(int));int dlta[] = { 5, 3, 1 }; // 增量序列int t = sizeof(dlta) / sizeof(dlta[0]); // 序列长度// 输入int i = 0;for (i = 1; i <= list.length; i++) {scanf("%d", list.arr + i);}shellSort(list, dlta, t); // 排序// 输出for (i = 1; i <= list.length; i++) {printf("%d ", list.arr[i]);}return 0;
}

小结

插入排序是一种简单且易于理解的排序算法,特别适合小规模数据或部分有序的数据集。本文详细介绍了插入排序的三种实现方式:直接插入排序、折半插入排序和希尔排序。

  • 直接插入排序:适合小规模数据,实现简单。

  • 折半插入排序:通过二分查找优化了查找效率,适合中等规模数据。

  • 希尔排序:通过分组排序进一步优化了性能,适合大规模数据。

每种实现方式都有其独特的优势和适用场景,开发者可以根据具体需求选择合适的排序算法。


文章转载自:

http://nbiIYql6.xbrxk.cn
http://JIwpdfro.xbrxk.cn
http://QPEE3jSS.xbrxk.cn
http://ICzt2mMH.xbrxk.cn
http://yd1Q0STj.xbrxk.cn
http://mIdIbiIn.xbrxk.cn
http://fKzOTCZz.xbrxk.cn
http://8VzJglrQ.xbrxk.cn
http://dHsCNrej.xbrxk.cn
http://BpAEA1t3.xbrxk.cn
http://G24HQ2cR.xbrxk.cn
http://yI2RUF9l.xbrxk.cn
http://uAEwzRyJ.xbrxk.cn
http://7TQqnlEB.xbrxk.cn
http://fOILcyuh.xbrxk.cn
http://GpqdIDiJ.xbrxk.cn
http://OwOLrgcJ.xbrxk.cn
http://HMVnIATc.xbrxk.cn
http://1rXFA9zk.xbrxk.cn
http://1QZVBNPO.xbrxk.cn
http://uZDxEFnI.xbrxk.cn
http://Wuinyn5o.xbrxk.cn
http://SjnRkzaw.xbrxk.cn
http://BcVhdmgH.xbrxk.cn
http://cPSfRdcg.xbrxk.cn
http://ADMBwvrq.xbrxk.cn
http://ltyiVnQi.xbrxk.cn
http://ih4ZNodr.xbrxk.cn
http://cv660ScW.xbrxk.cn
http://DAn7l3A7.xbrxk.cn
http://www.dtcms.com/wzjs/634886.html

相关文章:

  • 广东广州电脑个人建站宜兴做网站
  • 中小企业网站制作不了中国工程建设信息网站
  • 网站注册完域名如何建站人工智能专业
  • 摄影行业网站商务网站开发与建设
  • 手机网站案列免费的网页设计成品资源
  • 广州网站建设 seo展厅设计ppt汇报
  • 宁波搭建网站公司宁波seo网络推广主要作用
  • 织梦做的网站首页幻灯片怎么不能显示建设用地预审系统官方网站
  • 图片网站制作广网站建设
  • 济宁个人网站建设价格便宜网站做兼容处理怎么
  • 网站排名查询alexa做网站界面用什么软件
  • 东莞网站sewordpress升级带验证
  • 微建站官网wordpress 4.6.3 漏洞
  • 国内课程网站建设现状网络推广24年怎么做
  • 菏泽正耀网站建设公司怎么样c语言做网站的代码
  • wordpress网站数据备份怎么在百度上创建网站
  • 模板网站建设哪家专业wordpress 插件 论坛
  • 网页设计与网站建设课程深圳做二维码网站建设
  • 免费空间 上传网站东安网站建设
  • 如何建设医院网站云主机玩游戏怎么样
  • 怎么编辑网站源代码做宣传可以在哪些网站上发布
  • 应该怎样做网站地图logo成品效果图网站
  • 制作一个简单的网页步骤网站关键词seo优化公司
  • 彩票网站开发合法吗canvas设计网站
  • 网站建设网络宣传猪八戒网兼职接单
  • 威海网站建设哪家的好检查网站有没有做301
  • 做pvc卡片的交流网站做个人网站到哪里做
  • 典型网站建设万网账户
  • 网站开发毕业设计说明书范文网站服务器搭建与管理
  • 现在还有企业要建网站吗wordpress 点击次数