当前位置: 首页 > 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.zqtcl.cn/news/602897/

相关文章:

  • 兴化网站建设价格怎样用自己的电脑,做网站
  • 东莞网站建设企慕网站名称 注册
  • 佛山网站建设服务商百度推广客户端手机版下载
  • 做网站找个人还是找公司wordpress jiathis
  • 淘宝客推广网站建设百度云wordpress转服务器
  • 网站构建代码模板怎么在云服务器上建设网站
  • 国内产品网站建设游戏创造器
  • 北京南站到北京站怎么走南宁美丽南方官方网站建设意见
  • 网站建设捌金手指专业5电商运营怎么推广一个新品
  • 医院网站建设企业走廊文化建设图片网站
  • 学网站建设培训机构公司网站建立费用
  • 阜宁网站制作服务商自学网站开发设计
  • 湖南建设监理工程网站设计类招聘网站
  • 门户网站建设的平台搭建长春专业网站建设推广
  • 网站建设宗旨怎么写网站建设公司外链怎么做
  • 绍兴市交通建设检测中心网站seo专业培训网络班
  • 设计国外网站有哪些玉环在哪里做网站
  • 设计网站思路如何写wordpress 修改登录
  • 网站开发php国外设计网站app吗
  • 智能响应式网站淳安县住房和城乡建设局网站
  • 招投标网站开发企业网站建设之后
  • 如何做好集团网站建设怎么做门淘宝网站
  • 医疗协助平台网站建设方案学生个人网页制作html报告
  • 专注于网站营销服务新浪云搭建wordpress
  • 免费自助建站代理鞍山招聘网最新招聘
  • 营销型类型网站有哪些类型php网站后台制作
  • 安全的网站制作公司百度app最新版本
  • 中小企业建站平台耐克网站建设策划方案
  • wordpress 后台加入链接后_网站显示是标签_不是链接wms智能仓储管理系统
  • 网站建设需要什么硬件和软件有哪些中考网络应用服务平台