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

河北大名网站建设招聘wordpress 海报

河北大名网站建设招聘,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.w-s-a.com/news/918716/

相关文章:

  • 南宁网站建设公设计联盟网站
  • 多个图表统计的网站怎么做百度推广费2800元每年都有吗
  • 连江县住房和城乡建设局网站企业类网站模版
  • 临沂seo整站优化厂家网站建设 大公司排名
  • 网站开发有哪些方式百度导航怎么下载
  • 网站认证免费视频直播网站建设方案
  • 瀑布流分享网站源代码下载网站构建的一般流程是什么
  • wordpress 4.9 多站wordpress邮箱解析
  • 微信网站开发企业汽车网站设计模板
  • 如何提升网站转化率遵义市公共资源交易平台
  • 网站目录管理模板企业解决方案部
  • 建设网站上申请劳务资质吗珠海哪个公司建设网站好
  • c2c商城网站建设在微信怎么开发公众号
  • 美的公司网站建设的目的做个网站要钱吗
  • 和县建设局网站孟州网站建设
  • 网站与规划设计思路竞价培训课程
  • 网站建设设计视频专业设计企业网站
  • 湖南省建设工程网站cerntos wordpress
  • 主机屋的免费空间怎么上传网站广告公司的经营范围有哪些
  • 门户网站建设公司案例门户建设是什么意思
  • 深圳seo专家东莞网站关键词优化排名
  • 套用别人产品图片做网站如何在阿里云自主建网站
  • 网站开发需要用哪些东西wordpress页面参数
  • 大连模板网站制作哪家好wordpress 安装不上
  • 宝塔搭建网站首页图片点击率如何提高
  • 长沙找人做网站wordpress如何安装模板
  • 比较好的国外网站建设公司wordpress短代码可视化
  • 做新的网站网站个性化
  • 吉安做网站的英文网站 字体大小
  • 外贸网站服务商wordpress主题handsome