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

个人网站设计制作步骤wordpress国内

个人网站设计制作步骤,wordpress国内,网站制作专业的公司有哪些,院内设计前面我们学习了数据结构二叉树,接下来我们将开启一个新的章节,那就是在日常生活中经常会用到的排序算法。 所谓排序算法就是给你一堆数据,让你从小到大(或从大到小)的将这些数据排成一个有序的序列(这些数据…

  前面我们学习了数据结构二叉树,接下来我们将开启一个新的章节,那就是在日常生活中经常会用到的排序算法。

  所谓排序算法就是给你一堆数据,让你从小到大(或从大到小)的将这些数据排成一个有序的序列(这些数据通常是存放在数组中)。排序算法有很多,前面我们在学习堆的时候已经介绍过一种经典的排序算法 -- 堆排序,不知道你是否还记得堆排序的算法思想和时间复杂度呢?接下来我们将会讲解其他的 6 个经典排序算法,包括插入排序,希尔排序,直接选择排序,冒泡排序,快速排序以及归并排序。


目录

1  算法思想

2  代码实现

3  时间复杂度与空间复杂度


1  算法思想

  所谓直接插入排序就是在已经排好序的序列中依次插入要插入的数字,所以数组中的数据会被划分为两大部分,分别是已经排好序的一部分,还有待排序的一部分,直接插入排序就是将没有排好序的数字依次插入到已经排好序的序列中。

  如以下这个序列进行直接插入排序的过程如图所示:

 这里假设要对数组 arr 排升序:开始我们先定义一个循环变量 i,让其从 0 下标开始遍历 arr 数组,结束条件我们先暂时不管。然后在循环里面定义一个 end 和 tmp 变量,end 变量指向已经排好序的序列的最后一个元素,tmp 变量用来暂存待排序的那个数字(也就是要插入到有序序列中的那个数字),即 arr[end + 1]。在循环里面,如果 arr[end] > tmp ,说明 arr[end] 是排在 tmp 后面的,就要让 arr[end + 1] = arr[end],让数组元素向后挪,直到出现 arr[end] <= tmp 或者 有序序列的元素已经全部挪完了,即end < 0 了,此时,tmp 就应该插入到 arr[end + 1] 的位置

  那么遍历数组的循环的结束条件应该是什么呢?由于 end 每次都是指向的排好序的序列的最后一个元素,而第一次循环的排好序的最后一个元素就是第一个元素(也就是下标为 0 的元素);第二次循环排好序的最后一个元素就是第二个元素(下标为1),所以每次进入循环 end 应该是等于 i 的,这样 end 所指向的元素才是排好序序列的最后一个元素。既然 end = i,那么在循环里面由于要挪动元素,就会出现 arr[end + 1]  = arr[end],所以为了防止 end + 1 超出数组访问范围,发生越界,所以 i 最后一次应该是指向倒数第二个元素,即下标为 n - 2 的元素(n 为数组元素个数),所以循环停止条件应该是 i <= n - 2 或者 i < n - 1


2  代码实现

//直接插入排序
//这里排升序
void Swap(int* x, int* y)
{int tmp = *x;*x = *y;*y = tmp;
}void InsertSort(int* arr, int n)
{for (int i = 0;i < n - 1; i++){int end = i;int tmp = arr[end + 1];while (end >= 0){if (arr[end] > tmp){Swap(&arr[end], &arr[end-1]);end--;}else{break;}}Swap(&arr[end + 1], &tmp);
}

​测试用例:

//打印函数
void Print(int* arr, int n)
{for (int i = 0; i < n; i++){printf("%d ", arr[i]);}printf("\n");
}//测试InsertSort
int main()
{int arr[] = { 10, 2, 5, 7, 1, 4, 8 };int n = sizeof(arr) / sizeof(arr[0]);InsertSort(arr, n);Print(arr, n);return 0;
}

3  时间复杂度与空间复杂度

  时间复杂度:最坏情况下 T(n) = O(n^2),但是在一般情况下,直接插入排序是小于O(n^2)的,因为如果end位置小于tmp的话,就会跳出第二层循环,所以是小于O(n^2)的。

  空间复杂度:由于在代码中仅仅使用了几个变量,所以空间复杂度是 O(1) 的。


文章转载自:

http://vQkpfr93.fdwLg.cn
http://PMyJ1hPP.fdwLg.cn
http://DdT4tkST.fdwLg.cn
http://iTkBTs9O.fdwLg.cn
http://uXITMWip.fdwLg.cn
http://DE9sTBnV.fdwLg.cn
http://8bgzwfyM.fdwLg.cn
http://R4ihbJjs.fdwLg.cn
http://x0CvcMHi.fdwLg.cn
http://D0H0HJdz.fdwLg.cn
http://A3BF5QkE.fdwLg.cn
http://YTDmCEFn.fdwLg.cn
http://EYY9xTkx.fdwLg.cn
http://8LkWnFi6.fdwLg.cn
http://IsjwwzGF.fdwLg.cn
http://jMq4ie59.fdwLg.cn
http://EZ9JQ13J.fdwLg.cn
http://mKIKPDFn.fdwLg.cn
http://zB5k9lRr.fdwLg.cn
http://fVxauQGA.fdwLg.cn
http://AwirmV0B.fdwLg.cn
http://TozR2EGi.fdwLg.cn
http://9aDE8ipJ.fdwLg.cn
http://iGWQtPg5.fdwLg.cn
http://nHtx9sQv.fdwLg.cn
http://I8FIOgBu.fdwLg.cn
http://ANrRo9Sz.fdwLg.cn
http://0OjGGoFH.fdwLg.cn
http://ldFUE13J.fdwLg.cn
http://udIiZ7MV.fdwLg.cn
http://www.dtcms.com/wzjs/650893.html

相关文章:

  • 做类似淘宝网站怎么做的做一的同志小说网站有哪些
  • 域名所有人是网站名不能转出wordpress房产主题
  • 如何在微信平台做购买网站电子商务网站开发指南
  • 太仓市住房城乡建设局网站做外贸网站注意什么
  • 网站推广计划至少应包括计算机网络技术课程
  • 建设网站沙井福建网站建设费用
  • 水利建设相关网站搭建漏洞网站
  • 太原做响应式网站建设银行辽宁招聘网站
  • wordpress文件下载北京seo包年
  • 做数据图网站wordpress发布文章 更新失败
  • 海南省城乡建设厅网站注册微信公众号流程
  • 长治网站建设知名网站建设官网
  • 宁波比较好的网站公司如何创建一个自己的平台
  • 云南网站建设网站运营wordpress登录cookies
  • asp.net网站开发案例教程孝感住房和城乡建设部网站
  • 网络营销导向网站建设的基础wordpress只显示文本摘要
  • 青海企业网站建设网站怎么做?
  • 徐州网站平台制作公司宁波网站建设有限公司
  • 网站建设过程和准备阶段企业网站分析报告
  • 电脑上怎么做网站搭建网站都需要什么
  • 东莞市长安镇做网站怎么创建一个平台
  • 品牌网网站建设没有备案的交易网站
  • 关于建筑建设的网站温州企业做网站
  • 私募基金网站建设要求王也气质头像
  • 福建远方建设有限公司网站网站开发和网络安全
  • 超市营销型网站建设策划书保定网络运营公司
  • 虚拟主机可以做视频视频网站吗深圳建设工程网
  • 怎么把自己做的网站放到公网上网站文字格式
  • 阿里网站年费续费怎么做分录求做外宣图网站
  • 建设银行积分兑换商城官方网站网络营销指导如何做