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

怎么用新浪云做网站网站班级文化建设视频

怎么用新浪云做网站,网站班级文化建设视频,小学生做创客大赛网站的题,wordpress重新定向一.概要 快速排序是一种基于分治思想的排序算法#xff0c;其基本思路是选取一个基准值#xff08;pivot#xff09;#xff0c;通过一趟排序将待排序列分成两个部分#xff0c;其中左半部分都小于基准值#xff0c;右半部分都大于基准值#xff0c;然后对左右两部分分…一.概要 快速排序是一种基于分治思想的排序算法其基本思路是选取一个基准值pivot通过一趟排序将待排序列分成两个部分其中左半部分都小于基准值右半部分都大于基准值然后对左右两部分分别递归地进行快速排序最终得到有序序列。 具体的实现过程如下 选取基准值任意选定一个数作为基准值。 分割操作设定两个指针左指针和右指针分别指向序列的开头和结尾。从右指针开始向左扫描找到第一个小于基准值的元素将其与左指针所指的元素交换位置。然后从左指针开始向右扫描找到第一个大于基准值的元素将其与右指针所指的元素交换位置。重复以上过程直到左指针与右指针相遇此时将基准值与相遇位置的元素交换。 递归操作递归地对左右两部分分别进行快速排序直到每个部分只有一个元素或为空。 最终得到一个有序序列。 快速排序的时间复杂度是 O(nlogn)平均情况下比较快最坏情况下为 O(n^2)是一种不稳定的排序算法。在实际应用中可以通过随机选择基准值、三数取中等方法来避免出现最坏情况提高排序效率。 二、代码实现 int GetMidNumi(int* a, int left, int right) {int mid (left right) / 2;if (a[left]a[mid]){if (a[mid]a[right]){return mid;}else if (a[left]a[right]){return left;}else{return right;}}else{if (a[mid]a[right]){return mid;}else if(a[left]a[right]){return left;}else{return right;}} }void QuickSort(int* a, int left, int right){if (left right)return;int begin left, end right;//随机选KEY//int randi left (rand() % (right - left));//Swap(a[left], a[randi]);//三数取中int midi GetMidNumi(a, left, right);Swap( a[midi], a[left]);int keyi left;while (left right){//右边找小while (left right a[right] a[keyi])--right;//左边找大while (left right a[left] a[keyi])left;Swap(a[left], a[right]);}Swap(a[keyi], a[left]);keyi left;QuickSort(a, begin, keyi - 1);QuickSort(a, keyi 1, end); } 这段代码是实现快速排序的程序具体工作流程如下 选取关键字 keyi一般选择序列中的第一个元素。从序列的两端开始搜索右边找到小于keyi的元素左边找到大于keyi的元素然后交换这两个元素的位置。继续执行步骤2直到左右指针相遇。将关键字 keyi 与相遇位置的元素交换位置。递归地对左右两部分分别进行快速排序。在实现过程中该程序使用了三数取中的方法来选择关键字避免了最坏情况的发生。同时在搜索元素时也采用了双向搜索的方法提高了排序效率。 整个快速排序的时间复杂度为 O(nlogn)最坏情况下为 O(n^2)空间复杂度为 O(logn)是一种高效的排序算法。 三、总结 快速排序是一种基于分治思想的排序算法。其基本思想是选取一个基准值通过一趟排序将待排序列分成两个部分其中左半部分都小于基准值右半部分都大于基准值然后对左右两部分分别递归地进行快速排序最终得到有序序列。 快速排序具有以下优点 时间复杂度较低平均时间复杂度为 O(nlogn)在实践中表现良好较适合大规模数据的排序。 空间复杂度较低空间复杂度为 O(logn)不需要额外的存储空间能够节省内存。 实现简单快速排序的实现比较简单易于理解和掌握。 但是快速排序也存在以下缺点 最坏情况下时间复杂度较高在某些特殊情况下如原序列已经排好序或基准值选择不当时快速排序的时间复杂度会退化到 O(n^2)。 不适合稳定性排序由于交换过程不一定保证元素的相对位置不变因此快速排序不适合对序列中有相同元素的数据进行排序。 针对上述缺点可以采用以下方法来改进快速排序 随机选取基准值避免最坏情况的发生提高排序效率。 三数取中法选取基准值通过选取序列头、尾和中间位置的元素的中位数作为基准值避免最坏情况的发生提高排序效率。 在小规模数据时采用插入排序当待排序的子序列长度小于一定值时采用插入排序代替快速排序可以降低算法的时间复杂度。
http://www.hkea.cn/news/14510561/

相关文章:

  • wordpress 企业站开发php网站后台登陆地址
  • 北京学习网站建设中国著名十大vi设计案例
  • 案例学习网站建设方案设计素材网站哪个好
  • 合肥网站建设百家号wordpress 页面与目录
  • 成都高新区建设局网站wordpress 修改目录id
  • 长沙网页设计公司网站新手学做网站 电子书
  • 网站建设模板之家免费下载实战网站开发
  • 凡科建站步骤域名申请哪家好
  • 做外国网站定制安卓app多少钱
  • 网站建设会面临些什么问题百度一下知道首页
  • 三门峡网站建设公司东莞网络推广建站
  • 阿里巴巴国际站怎么开店创建网站的步骤是
  • 做h5那个网站好小程序开发文档api
  • wordpress国外主题网站模板网站设计的五大要素
  • 网站策划与建设阶段的推广方法阿里云虚拟主机怎么做网站
  • 网站可以几个服务器西安网站建设优化与推广
  • 重庆放心seo整站优化天津做做网站
  • 怎么申请信用卡收款网站接口品牌宣传如何做
  • 新建的网站百度多久才会收录长沙seo培训
  • 杭州做家教网站做美食分享网站源码
  • 郴州建设网站国内外知名市场调研公司
  • 如何申请一个网站空间最新郑州发布
  • 个人网站设计师简单搜索主页网址
  • 长沙企业网站建设哪家好企业查询卡在哪里打印
  • 文章网站是怎么做的慈溪网页设计
  • 域名备案查询站长工具网站生成移动版
  • 网络存储上做网站智慧团建网站登录密码
  • 青岛市规划建设局网站专业网站设计第三方
  • 网站建设的资金遵义在线读者留言板留言
  • 做网站好还是网页好万维网官方网站