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

网站建设赚钱流程携程网网站规划建设特点

网站建设赚钱流程,携程网网站规划建设特点,常用网站logo,做视频网站服务器多少钱文章目录 1.插入排序#xff08;Insertion Sort#xff09;1.1 简介1.2 插入排序的步骤1.3 插入排序的C实现1.4 插入排序的时间复杂度1.5 插入排序的空间复杂度1.6 插入排序的动画 2. 二分插入排序#xff08;Binary Insertion Sort#xff09;2.1 简介2.2 二分插入排序步骤… 文章目录 1.插入排序Insertion Sort1.1 简介1.2 插入排序的步骤1.3 插入排序的C实现1.4 插入排序的时间复杂度1.5 插入排序的空间复杂度1.6 插入排序的动画 2. 二分插入排序Binary Insertion Sort2.1 简介2.2 二分插入排序步骤2.3 二分插入排序C语言实现2.4 二分插入排序的时间复杂度2.5 二分插入排序的时间复杂度 1.插入排序Insertion Sort 1.1 简介 插入排序Insertion Sort是一种简单直观的排序算法它的工作原理是通过构建有序序列对于未排序数据在已排序序列中从后向前扫描找到相应位置并插入。插入排序在实现上通常采用in-place排序即只需用到O(1)的额外空间的排序因而在从后向前扫描过程中找到合适位置并插入。 插入排序Insertion Sort是一种简单直观的排序算法它的工作原理是通过构建有序序列对于未排序数据在已排序序列中从后向前扫描找到相应位置并插入。插入排序在实现上通常采用in-place排序即只需用到O(1)的额外空间的排序因而在从后向前扫描过程中找到合适位置并插入。 1.2 插入排序的步骤 初始状态假设第一个元素已经排序即长度为1的数组是有序的。遍历未排序部分从第二个元素开始依次取出每一个元素。插入元素 将已取出的元素记为key与已排序部分的元素从后向前比较。如果已排序部分的元素大于key则将该元素向后移动一位。重复上述步骤直到找到key的合适位置将其插入。 重复重复步骤2和3直到所有元素均已排序。 1.3 插入排序的C实现 #include stdio.h// 插入排序函数 void insertionSort(int arr[], int n) {int i, key, j;for (i 1; i n; i) {key arr[i];j i - 1;// 将arr[i]插入到已排序的arr[0..i-1]部分while (j 0 arr[j] key) {arr[j 1] arr[j];j j - 1;}arr[j 1] key;} }// 打印数组函数 void printArray(int arr[], int size) {int i;for (i 0; i size; i)printf(%d , arr[i]);printf(\n); }// 主函数 int main() {int arr[] {12, 11, 13, 5, 6};int n sizeof(arr) / sizeof(arr[0]);printf(排序前的数组: \n);printArray(arr, n);insertionSort(arr, n);printf(排序后的数组: \n);printArray(arr, n);return 0; }1.4 插入排序的时间复杂度 最佳情况O(n)数组已经是有序的最坏情况O(n2)数组是逆序的平均情况O(n2) 1.5 插入排序的空间复杂度 插入排序是in-place排序算法因此其空间复杂度为O(1)。 1.6 插入排序的动画 2. 二分插入排序Binary Insertion Sort 2.1 简介 它通过引入二分查找Binary Search算法来优化查找插入位置的过程。在标准的插入排序中为了将当前元素插入到已排序部分的正确位置算法需要从后向前扫描已排序部分直到找到比当前元素大的第一个元素或到达数组的开头。 2.2 二分插入排序步骤 从数组的第二个元素开始将每个元素视为待插入元素。使用二分查找算法在已排序部分中查找待插入元素的正确位置。将已排序部分中大于待插入元素的元素向后移动一位以腾出空间。将待插入元素插入到正确位置。重复步骤1-4直到数组完全排序。 2.3 二分插入排序C语言实现 #include stdio.h// 二分查找函数返回插入位置的前一个索引 int binarySearch(int arr[], int item, int low, int high) {if (high low)return (item arr[low]) ? (low 1) : low;int mid (low high) / 2;if (item arr[mid])return mid 1;if (item arr[mid])return binarySearch(arr, item, mid 1, high);return binarySearch(arr, item, low, mid - 1); }// 二分插入排序函数 void binaryInsertionSort(int arr[], int n) {int i, j, key, loc;for (i 1; i n; i) {key arr[i];// 使用二分查找找到插入位置loc binarySearch(arr, key, 0, i - 1);// 移动元素以腾出空间for (j i - 1; j loc; j--) {arr[j 1] arr[j];}arr[loc] key;} }// 打印数组函数 void printArray(int arr[], int size) {int i;for (i 0; i size; i)printf(%d , arr[i]);printf(\n); }// 主函数 int main() {int arr[] {37, 23, 0, 17, 12, 72, 31, 46, 100, 88, 54};int n sizeof(arr) / sizeof(arr[0]);printf(排序前的数组: \n);printArray(arr, n);binaryInsertionSort(arr, n);printf(排序后的数组: \n);printArray(arr, n);return 0; } 二分插入排序的时间和空间复杂度分析如下 2.4 二分插入排序的时间复杂度 二分插入排序的时间复杂度主要由两部分组成二分查找和元素移动。 二分查找在每次插入时使用二分查找来确定插入位置。二分查找的时间复杂度是对数级别的即O(log n)其中n是已排序部分的长度。然而需要注意的是这里的n并不是整个数组的长度而是已排序部分的长度。在插入排序的过程中已排序部分的长度是逐渐增加的。元素移动当找到插入位置后需要将该位置及其之后的元素向后移动一位以腾出空间插入新元素。这个过程的时间复杂度是线性的即O(n)其中n是已排序部分的长度在插入当前元素之前的长度。在最坏情况下当前元素可能需要被插入到已排序部分的开头导致所有已排序的元素都需要向后移动一位。 由于二分插入排序在每次插入时都需要进行二分查找和元素移动因此其总体时间复杂度仍然是O(n2)。这是因为虽然二分查找减少了比较次数但元素移动的次数并没有减少。在插入n个元素的过程中每个元素都可能需要进行O(n)次的移动在最坏情况下因此总的时间复杂度是O(n2)。 2.5 二分插入排序的时间复杂度 二分插入排序是就地排序算法in-place sorting algorithm它不需要额外的存储空间来存储中间结果。算法在排序过程中只需要几个额外的变量来存储临时值和索引因此其空间复杂度是O(1)。 综上所述二分插入排序的时间复杂度是O(n2)空间复杂度是O(1)。这些复杂度特性使得二分插入排序在处理小规模数据集或几乎已排序的数据集时可能表现出较好的性能但在处理大规模数据集时则不是最优选择。
http://www.w-s-a.com/news/15862/

相关文章:

  • 用wordpress做企业网站视频教程韶关建设网站
  • 怎么做一个免费的网站云南网站设计选哪家
  • dw做六个页面的网站做网站运营有前途吗
  • 中级网站开发工程师 试题战地之王网站做任务
  • 广东东莞保安公司湖南 seo
  • 无锡网站策划公司如何零基础学编程
  • 金融网站如何做设计网站开发流程 文档
  • 用jsp做网站国内知名设计工作室
  • 一键搭建网站北京公司网站设计
  • 山东省城乡建设部网站网站营销单页怎么做
  • 中国移动视频网站建设百度统计官网
  • 网站实施过程网站上传视频怎么做
  • 网上书店网站建设实训总结嘉兴seo
  • 网站运行需求cos wordpress
  • 网络小说网站推广策划方案单位网站建设收费标准
  • 医院网站建设论证报告河源网站seo
  • 网站demo怎么做淘宝客网站一般用什么做的
  • 网站开发之美 pdf关键词查询优化
  • 可以建站的网站做一个网站美工多少钱
  • 怎么做网站专题互联网营销师报考费用
  • 淘宝导购网站怎么做上海数据开放网站建设
  • 广东网站建设怎么选2021个人网站盈利模式
  • 珠海网站建设的公司排名网站前端开发培训
  • 手机网站制作 费怎么做分录网站域名hk
  • 济南做网站建网站公司怎样用代码制作网站
  • 网站开发文档有哪些建设规划
  • 专注网站建设11年百度搜索不到我的网站
  • 企业网站 建设 流程wordpress 分类目录自定义
  • 北京市建设管理公司网站长春网站推广排名
  • 西安建站软件获取网站全站代码