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

医院网站管理办法苏州百度推广排名优化

医院网站管理办法,苏州百度推广排名优化,优良的定制网站建设,全球十大营销策划公司引言:快速排序作为一种非常经典且高效的排序算法,无论是工作还是面试中广泛用到,作为一种分治思想,需要熟悉递归思想。下面来讲讲快速排序的实现和改进。 老规矩,先用图解来理解一下:(这里使用快…

引言:快速排序作为一种非常经典且高效的排序算法,无论是工作还是面试中广泛用到,作为一种分治思想,需要熟悉递归思想。下面来讲讲快速排序的实现和改进。

老规矩,先用图解来理解一下:(这里使用快速排序中的“挖坑法”)

笔误:下面这个图right是--的! 

 

 

  以此往复

下面是代码:

void dfs_quick_sort(int* arry, int left, int right) {if ((right - left) <= 0) return;//添加一个三数取中的操作int key = arry[left];int end = right;int begin = left;while (left < right) {while (left < right && arry[right] >= key) {right--;}arry[left] = arry[right];while (left < right && arry[left] <= key) {left++;}arry[right] = arry[left];}arry[right] = key;dfs_quick_sort(arry,begin, left - 1);dfs_quick_sort(arry,right + 1, end);
}
//挖坑法
void quick_sort(int* arry, int size) {assert(arry);dfs_quick_sort(arry, 0, size - 1);
}

测试代码:

void test_quick_sort(int* arry, int size) {Printf(arry, size);quick_sort(arry, size);Printf(arry, size);
}
int main() {int arry[] = { 2,3,1,6,21,78,11,36,11,11,9 };int len = sizeof(arry) / sizeof(arry[0]);//test_insertion_sort(arry, len);//est_shell_sort(arry, len);//test_select_sort(arry, len);//test_heap_sort(arry, len);//test_bubble_sort(arry, len);test_quick_sort(arry, len);return 0;
}

MORE:试想如果刚刚演示的图中,一开始取到的不是1,而是5,是不是步骤会少很多,因为如果拿到的是排好序后的中间数,这个数左边是比他小的,右边是比他大的,每次这样,相当于每次都二分,这样向下递归层数就是logN,而如果每次拿到的key是最大或最小的数,第一次操作完还剩n-1个,第二次还剩n-2....。层数为n层,时间复杂度为N^2。

所以我们要尽量选到一个靠近排序好的中间的数,不要选到最大或最小的数为key。

下面将代码进行改进:(取最左边和最右边和中间三个值中的中间数)

int mid_quick_number(int* arry, int left, int right) {int mid = left + (right - left >> 1);//去中间数防止普通求中间数溢出问题if (arry[mid] > arry[left]) {if (arry[right] > arry[mid]) {mid = mid;}else if(arry[right]>arry[left]){mid = right;}else {mid = left;}}else {if (arry[right] < arry[mid]) {mid = mid;}else if (arry[right] > arry[left]) {mid = left;}else {mid = right;}}return mid;
}
void dfs_quick_sort(int* arry, int left, int right) {if ((right - left) <= 0) return;//添加一个三数取中的操作int mid = mid_quick_number(arry, left, right);swap(arry + mid, arry+left);int key = arry[left];int end = right;int begin = left;while (left < right) {while (left < right && arry[right] >= key) {right--;}arry[left] = arry[right];while (left < right && arry[left] <= key) {left++;}arry[right] = arry[left];}arry[right] = key;dfs_quick_sort(arry,begin, left - 1);dfs_quick_sort(arry,right + 1, end);
}
//挖坑法
void quick_sort(int* arry, int size) {assert(arry);dfs_quick_sort(arry, 0, size - 1);
}
http://www.ds6.com.cn/news/111933.html

相关文章:

  • 官方网站下载万能钥匙公司的公关
  • 如何自学广告设计黑帽seo工具
  • 服务器网站带宽平面设计培训班学费一般多少
  • 自媒体专用网站免费百度指数首页
  • 成都网站优化及推广近期的新闻热点
  • 品牌代理seo咨询服务
  • 做那种事情的网站seo推广是什么意思
  • ui设计一般用什么软件商丘seo博客
  • 网站中的文章可以做排名吗互联网全网营销
  • 网站原创文章在哪里找重庆小潘seo
  • 公司网站不备案推广平台网站有哪些
  • 东莞知名网站互联网广告推广好做吗
  • 做网站的设计文档怎么做昆山优化外包
  • 做wordpress 主题下载站百度广告代理公司
  • 网站开发 商标第几类网络营销公司怎么注册
  • 银行需要网站开发人员吗一份完整app运营推广方案
  • 产品报价网站建设费用手游推广平台代理
  • 政府网站的作用佛山网站定制
  • 淮南招聘网站建设app运营方案
  • 做网站用html5全网营销的公司
  • wordpress拉黑用户登录什么叫seo
  • 龙岩网站改版较好的公司seo建站工具
  • 做p2p网站的公司重庆 seo
  • 建设一个视频网站需要什么条件长沙网站关键词推广
  • 怎么做视频还有网站吗常州谷歌优化
  • 展会网站怎么做营销型网站建设设计
  • 怎么样在网上建设网站挣钱热门职业培训班
  • 佛山外贸网站设计站长工具seo综合查询访问
  • 一个商城网站开发要多少时间发帖推广平台
  • 网站服务器租用资质哪些网站推广不收费