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

东莞自助建站软件ppt怎么做 pc下载网站

东莞自助建站软件,ppt怎么做 pc下载网站,wordpress多梦主题,软件分享网站总体概况 参考自#xff1a;https://github.com/hustcc/JS-Sorting-Algorithm 排序算法是《数据结构与算法》中最基本的算法之一。 排序算法可以分为内部排序和外部排序#xff0c;内部排序是数据记录在内存中进行排序#xff0c;而外部排序是因排序的数据很大#xff0c…总体概况 参考自https://github.com/hustcc/JS-Sorting-Algorithm 排序算法是《数据结构与算法》中最基本的算法之一。 排序算法可以分为内部排序和外部排序内部排序是数据记录在内存中进行排序而外部排序是因排序的数据很大一次不能容纳全部的排序记录在排序过程中需要访问外存。常见的内部排序算法有插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。用一张图概括 关于时间复杂度 平方阶 (O(n2)) 排序 各类简单排序直接插入、直接选择和冒泡排序。线性对数阶 (O(nlog2n)) 排序 快速排序、堆排序和归并排序O(n1§)) 排序§ 是介于 0 和 1 之间的常数。 希尔排序线性阶 (O(n)) 排序 基数排序此外还有桶、箱排序。 关于稳定性 稳定的排序算法冒泡排序、插入排序、归并排序和基数排序。 不是稳定的排序算法选择排序、快速排序、希尔排序、堆排序。 冒泡排序 1.概念 冒泡排序Bubble Sort也是一种简单直观的排序算法。它重复地走访过要排序的数列一次比较两个元素如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。 作为最简单的排序算法之一冒泡排序给我的感觉就像 Abandon 在单词书里出现的感觉一样每次都在第一页第一位所以最熟悉。冒泡排序还有一种优化算法就是立一个 flag当在一趟序列遍历中元素没有发生交换则证明该序列已经有序。但这种改进对于提升性能来说并没有什么太大作用。 2.算法步骤 比较相邻的元素。如果第一个比第二个大就交换他们两个。 对每一对相邻元素作同样的工作从开始第一对到结尾的最后一对。这步做完后最后的元素会是最大的数。 针对所有的元素重复以上的步骤除了最后一个。 持续每次对越来越少的元素重复上面的步骤直到没有任何一对数字需要比较。 3.动图演示 https://github.com/hustcc/JS-Sorting-Algorithm/blob/master/res/bubbleSort.gif 4.时间 当输入是正序时最快反序时最慢 5.代码 #includeiostream using namespace std; templatetypename T void bubble_sort(T arr[],int len) {int i, j;for(i0;ilen-1;i){for(j0;jlen-i-1;j){if(arr[j]arr[j1]) //相邻元素对比{swap(arr[j],arr[j1]); //交换位置}}} } int main() {int arr[] { 61, 17, 29, 22, 34, 60, 72, 21, 50, 1, 62 };int len (int) sizeof(arr) / sizeof(*arr);bubble_sort(arr,len); for (int i 0; i len; i){coutarr[i] ;} return 0; } 选择排序 1.概念 选择排序是一种简单直观的排序算法无论什么数据进去都是 O(n²) 的时间复杂度。所以用到它的时候数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。 2.算法步骤 首先在未排序序列中找到最小大元素存放到排序序列的起始位置 再从剩余未排序元素中继续寻找最小大元素然后放到已排序序列的末尾。 重复第二步直到所有元素均排序完毕。 3.代码 #includeiostream #includevector using namespace std; templatetypename T void selection_sort(std::vectorT arr) {for(int i0;iarr.size()-1;i){int min i; for(int ji1;jarr.size();j){if(arr[j]arr[min]) //与当前循环第一个元素比较{min j;//记录最小值下标}}std::swap(arr[min],arr[i]);//与最小的元素交换位置}}//从左向右移动每一次拿第一个元素与其它元素比较然后与最小的元素交换位置。int main() {vectorint arr { 61, 17, 29, 22, 34, 60, 72, 21, 50, 1, 62 };selection_sort(arr);for (int i 0; i arr.size(); i){coutarr[i] ;} printf(hello);return 0; } 插入排序 1.概念 插入排序的代码实现虽然没有冒泡排序和选择排序那么简单粗暴但它的原理应该是最容易理解的了因为只要打过扑克牌的人都应该能够秒懂。插入排序是一种最简单直观的排序算法它的工作原理是通过构建有序序列对于未排序数据在已排序序列中从后向前扫描找到相应位置并插入。 插入排序和冒泡排序一样也有一种优化算法叫做拆半插入。 2. 算法步骤 将第一待排序序列第一个元素看做一个有序序列把第二个元素到最后一个元素当成是未排序序列。 从头到尾依次扫描未排序序列将扫描到的每个元素插入有序序列的适当位置。如果待插入的元素与有序序列中的某个元素相等则将待插入元素插入到相等元素的后面。 3.代码 #includeiostream #includevector using namespace std; templatetypename T//vectorint arr { 61, 17, 29, 22, 34, 60, 72, 21, 50, 1, 62 }; void insertion_sort(std::vectorT arr) {for(int i1;iarr.size();i){int squence arr[i];//从第二个数开始int ji-1;while ((j0)(squencearr[j]))//每次都将拿到的数与前面所有的数比较然后交换位置排序类似打扑克时一张一张地抓牌然后在手里面排序{arr[j1] arr[j];j--;}arr[j1] squence; }}int main(int argc, const char** argv) {vectorint arr { 61, 17, 29, 22, 34, 60, 72, 21, 50, 1, 62 };insertion_sort(arr);for(int i0;iarr.size()-1;i){coutarr[i] ;}return 0; } 希尔排序 1.概念 希尔排序(Shells Sort)是插入排序的一种又称“缩小增量排序”Diminishing Increment Sort是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因D.L.Shell于1959年提出而得名。它是插入排序的高级版。 2.算法步骤 希尔排序将无序数组分割为若干个子序列子序列不是逐段分割的而是相隔特定的增量的子序列对各个子序列进行插入排序然后再选择一个更小的增量再将数组分割为多个子序列进行排序......最后选择增量为1即使用直接插入排序使最终数组成为有序。 增量的选择在每趟的排序过程都有一个增量至少满足一个规则 增量关系 d[1] d[2] d[3] .. d[t] 1 (t趟排序)根据增量序列的选取其时间复杂度也会有变化这个不少论文进行了研究在此处就不再深究 本文采用首选增量为n/2,以此递推每次增量为原先的1/2直到增量为1 下图详细讲解了一次希尔排序的过程。   自我理解将元素分成若干组对每一组进行插入排序。提高了插入排序的效率。 3.代码 #includeiostream #includevector using namespace std; templatetypename T void shell_sort(std::vectorT array, int length) {for(int hlength/2;h0;hh/2) //按照二分或者三分增量将数组分成n组{//插入排序每个小分组for(int i0;ih;i)//遍历每个小分组{for(int jih;jlength;jj1)//对每个小分组进行插入排序{while((j-h)0(array[j-h]array[j])) {std::swap(array[j-h],array[j]);jj-h;}}}}for(int i0;ilength;i){coutarray[i] ;} }int main(int argc, const char** argv) {vectorint arr { 61, 17, 29, 22, 34, 60, 72, 21, 50, 1, 62 };int length arr.size();shell_sort(arr,length);return 0; }
http://www.pierceye.com/news/602897/

相关文章:

  • 加快门户网站建设文网站建设费用计入什么科目
  • 网站建设合同英文模板下载湖州做网站的公司
  • 网站内容页设计济南网站优化
  • 简洁中文网站模板下载军事新闻头条最新消息
  • 湘潭网站建设 诚信磐石网络开发app软件的步骤
  • 阿里云网站备案网站建设方案书私有云可以建设网站
  • 网站建设如何增加流量做杂志的网站有哪些
  • 可信网站认证有用建设网站什么语言
  • 福州网站建设 大公司wordpress顺序
  • 为什么网站开发要用架构个人主页网站制作教程
  • 东莞教育网站建设做网站工资还没有文员高
  • 郑州网站制作工作室国内网站开发
  • 现在什么网站做外贸的最好wordpress window系统
  • 柬埔寨网赌网站开发新网络营销
  • html5毕业设计作品苏州关键词优化排名推广
  • 网站建设包括的内容相册在线设计平台
  • 花生壳可做网站吗微商城开发用华网天下首选
  • 口岸地区网站建设内容塔里木油田公司档案馆网站建设研究
  • 网站备案属于公司哪一块石家庄最新状况
  • 秦州建设网站免费代刷网站推广
  • 怎么查看一个网站是用什么程序做的我的家乡湛江网站设计
  • 沈阳网页模板建站开发手机app多少钱
  • 全国建设注册中心网站网页设计师培训价格
  • 做网站地图泰安百度公司代理商
  • 网站后台管理员密码汽车网站更新怎么做
  • 广东省网站备案查询怎么建设网站空间和备案
  • 企业网站软件下载红木家具网站模板
  • 如何创建网站步骤湖北网站制作公司的联系方式
  • 佛山建网站费用seo推广效果怎么样
  • 如何选择网站建设公司永州网页定制