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

带商城的企业网站源码正规的推文平台

带商城的企业网站源码,正规的推文平台,杭州网站建设公司费用,工业设计网站国外目录 一 概念 二 快速排序的实现 1. hoare版本 (1)代码实现 (2)单趟排序图解 (3) 递归实现图解 (4)细节控制 (5)时间复杂度 (6)三数取中优化 2 挖坑法 (1)代码实现 (2)单趟图解 3 前后指针法 (1) 代码实现 (2) 单趟图解 ​4 优化子区间 5 非递归快速排序 …目录 一 概念 二 快速排序的实现 1. hoare版本 (1)代码实现 (2)单趟排序图解 (3) 递归实现图解 (4)细节控制 (5)时间复杂度 (6)三数取中优化 2 挖坑法 (1)代码实现 (2)单趟图解  3 前后指针法  (1) 代码实现  (2) 单趟图解 ​4 优化子区间  5 非递归快速排序 ​ 三 快速排序的特性总结 一 概念 快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法其基本思想为任取待排序元素序列中 的某元素作为基准值按照该排序码将待排序集合分割成两子序列左子序列中所有元素均小于基准值右 子序列中所有元素均大于基准值然后最左右子序列重复该过程直到所有元素都排列在相应位置上为止 二 快速排序的实现 上述为快速排序递归实现的主框架发现与二叉树前序遍历规则非常像 1. hoare版本 (1)代码实现 #includestdio.h void Swap(int* x, int* y) {int tmp *x;*x *y;*y tmp; }int PartSort1(int* a, int left, int right) {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]);return left; }void QuickSort(int* a, int begin, int end) {if (begin end){return;}int key PartSort1(a, begin, end);QuickSort(a, begin, key - 1);QuickSort(a, key 1, end); } int main() {int arr[] {6,1,2,7,9,3,4,5,10,8};QuickSort(arr, 0, (sizeof(arr) / sizeof(int)) - 1);for (int i 0; i sizeof(arr) / sizeof(int); i){printf(%d , arr[i]);} } (2)单趟排序图解 我们看看单趟排序怎么排的 (3) 递归实现图解 再来看看递归怎么实现的 (4)细节控制 对细节控制上 我要做一下解释 那这里相遇位置一定比a[keyi]小呢?  右边先走导致的 (5)时间复杂度 我们来算一下快速排序的时间复杂度(需要对二叉树的基本性质熟悉) (6)三数取中优化 那针对有序 的情况 我们可以采取三数取中的方式解决 #includestdio.h void Swap(int* x, int* y) {int tmp *x;*x *y;*y tmp; }int GetMidi(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// a[left] a[mid]{if (a[left] a[right]){return left;}else if (a[mid] a[right]){return mid;}else{return right;}} }int PartSort1(int* a, int left, int right) {int midi GetMidi(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]);return left; }void QuickSort(int* a, int begin, int end) {if (begin end){return;}int key PartSort1(a, begin, end);QuickSort(a, begin, key - 1);QuickSort(a, key 1, end); } int main() {int arr[] {6,1,2,7,9,3,4,5,10,8};QuickSort(arr, 0, (sizeof(arr) / sizeof(int)) - 1);for (int i 0; i sizeof(arr) / sizeof(int); i){printf(%d , arr[i]);} } 2 挖坑法 (1)代码实现 #includestdio.h void Swap(int* x, int* y) {int tmp *x;*x *y;*y tmp; }int GetMidi(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// a[left] a[mid]{if (a[left] a[right]){return left;}else if (a[mid] a[right]){return mid;}else{return right;}} }int PartSort2(int* a, int left, int right) {int midi GetMidi(a, left, right);Swap(a[left], a[midi]);int key a[left];//保存key值以后 左边形成第一个坑位int hole left;while (left right){//右边先走找小填到左边的坑右边形成新的坑位if (left right a[right] key){right--;}a[hole] a[right];hole right;//左边再走找大填到右边的坑左边形成新的坑位if (left right a[left] key){left;}a[hole] a[left];hole left;}a[hole] key;return hole; }void QuickSort(int* a, int begin, int end) {if (begin end){return;}int key PartSort2(a, begin, end);QuickSort(a, begin, key - 1);QuickSort(a, key 1, end); } int main() {int arr[] {6,1,2,7,9,3,4,5,10,8};QuickSort(arr, 0, (sizeof(arr) / sizeof(int)) - 1);for (int i 0; i sizeof(arr) / sizeof(int); i){printf(%d , arr[i]);} }(2)单趟图解  3 前后指针法  (1) 代码实现  int PartSort3(int* a, int left, int right) {int keyi left;int prev left;int cur prev 1;while (cur right){if (a[cur] a[keyi] prev ! cur){Swap(a[cur], a[prev]);}cur;}Swap(a[keyi], a[prev]);return prev; } void QuickSort(int* a, int begin, int end) {if (begin end){return;}int key PartSort3(a, begin, end);QuickSort(a, begin, key - 1);QuickSort(a, key 1, end); } int main() {int arr[] {6,1,2,7,9,3,4,5,10,8};QuickSort(arr, 0, (sizeof(arr) / sizeof(int)) - 1);for (int i 0; i sizeof(arr) / sizeof(int); i){printf(%d , arr[i]);} } (2) 单趟图解 4 优化子区间  递归到小的子区间时, 不在递归分割排序,可以考虑使用插入排序 因为区间比较小的时候节点数开的很多  特别是最后一层 节点数占了整个数大致百分之五十 int PartSort(int* a, int left, int right) {int midi GetMidi(a, left, right);Swap(a[left], a[midi]);int keyi left;int prev left;int cur prev 1;while (cur right){if (a[cur] a[keyi] prev ! cur){Swap(a[cur], a[prev]);}cur;}Swap(a[prev], a[keyi]);return prev; }void QuickSort(int* a, int begin, int end) {if (begin end){return;}if ((end - begin 1) 10){int keyi PartSort(a, begin, end);QuickSort(a, begin, keyi - 1);QuickSort(a, keyi 1, end);}else{//插入排序InsertSort(a begin, end - begin 1);} }5 非递归快速排序 需要有对栈的基础  不会的可以看前面的博客 #includestdio.h #includestdbool.h #includestdlib.h #includeassert.h typedef struct STList {int* a;int size;int capacity; }ST;void STInit(ST* ps) {assert(ps);ps-a NULL;ps-size ps-capacity 0; }void STDestroy(ST* ps) {assert(ps);free(ps-a);ps-a NULL;ps-size ps-capacity 0; } void STPush(ST* ps, int x) {assert(ps);if (ps-size ps-capacity){int newcapacity (ps-capacity 0 ? 4 : ps-capacity * 2);int* tmp (int*)realloc(ps-a, sizeof(int) * newcapacity);if (tmp NULL){perror(realloc fail);exit(-1);}ps-a tmp;ps-capacity newcapacity;}ps-a[ps-size] x;ps-size; }void STPop(ST* ps) {assert(ps);assert(ps-size 0);ps-size--; }bool STEmpty(ST* ps) {assert(ps);return ps-size 0; }int STTop(ST* ps) {assert(ps);assert(ps-size 0);return ps-a[ps-size - 1]; } void Swap(int* x, int* y) {int tmp *x;*x *y;*y tmp; }int GetMidi(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// a[left] a[mid]{if (a[left] a[right]){return left;}else if (a[mid] a[right]){return mid;}else{return right;}} }int PartSort(int* a, int left, int right) {int midi GetMidi(a, left, right);Swap(a[left], a[midi]);int keyi left;int prev left;int cur prev 1;while (cur right){if (a[cur] a[keyi] prev ! cur){Swap(a[cur], a[prev]);}cur;}Swap(a[prev], a[keyi]);return prev; }void QuickSortNonR(int* a, int begin, int end) {ST st;//创建一个栈 STInit(st);//初始化STPush(st, end);STPush(st, begin);while (!STEmpty(st)){int left STTop(st);STPop(st);int right STTop(st);STPop(st);int keyi PartSort(a, left, right);// [lefy,keyi-1] keyi [keyi1, right]if (keyi 1 right){STPush(st, right);STPush(st, keyi 1);}if (left keyi - 1){STPush(st, keyi - 1);STPush(st, left);}}STDestroy(st); }int main() {int arr[] {6,1,2,7,9,3,4,5,10,8};QuickSortNonR(arr, 0, (sizeof(arr) / sizeof(int)) - 1);for (int i 0; i sizeof(arr) / sizeof(int); i){printf(%d , arr[i]);} } 三 快速排序的特性总结 1. 快速排序整体的综合性能和使用场景都是比较好的所以才敢叫快速排序 2. 时间复杂度O(N*logN) 3. 空间复杂度O(logN) 4. 稳定性不稳定 本节难度还是不低, 但是我觉得大家根据图解和代码慢慢吃透还是不难的,这节我画的图解很多, 对重点和难点进行了很细致的划分和讲解, 希望大家可以窥探到快速排序的妙处 继续加油!
文章转载自:
http://www.morning.rgqnt.cn.gov.cn.rgqnt.cn
http://www.morning.bcjbm.cn.gov.cn.bcjbm.cn
http://www.morning.fldsb.cn.gov.cn.fldsb.cn
http://www.morning.fdhwh.cn.gov.cn.fdhwh.cn
http://www.morning.mkkcr.cn.gov.cn.mkkcr.cn
http://www.morning.ldzss.cn.gov.cn.ldzss.cn
http://www.morning.nkjxn.cn.gov.cn.nkjxn.cn
http://www.morning.tzlfc.cn.gov.cn.tzlfc.cn
http://www.morning.elmtw.cn.gov.cn.elmtw.cn
http://www.morning.qnwyf.cn.gov.cn.qnwyf.cn
http://www.morning.pjrql.cn.gov.cn.pjrql.cn
http://www.morning.pwppk.cn.gov.cn.pwppk.cn
http://www.morning.mpbgy.cn.gov.cn.mpbgy.cn
http://www.morning.gkdqt.cn.gov.cn.gkdqt.cn
http://www.morning.nhzps.cn.gov.cn.nhzps.cn
http://www.morning.wddmr.cn.gov.cn.wddmr.cn
http://www.morning.zjrnq.cn.gov.cn.zjrnq.cn
http://www.morning.rbkdg.cn.gov.cn.rbkdg.cn
http://www.morning.qgwdc.cn.gov.cn.qgwdc.cn
http://www.morning.sjwiki.com.gov.cn.sjwiki.com
http://www.morning.khzml.cn.gov.cn.khzml.cn
http://www.morning.hengqilan.cn.gov.cn.hengqilan.cn
http://www.morning.kkjhj.cn.gov.cn.kkjhj.cn
http://www.morning.jpjxb.cn.gov.cn.jpjxb.cn
http://www.morning.hgsmz.cn.gov.cn.hgsmz.cn
http://www.morning.qyglt.cn.gov.cn.qyglt.cn
http://www.morning.ctsjq.cn.gov.cn.ctsjq.cn
http://www.morning.rjtmg.cn.gov.cn.rjtmg.cn
http://www.morning.nchlk.cn.gov.cn.nchlk.cn
http://www.morning.xinyishufa.cn.gov.cn.xinyishufa.cn
http://www.morning.ybgpk.cn.gov.cn.ybgpk.cn
http://www.morning.mkyny.cn.gov.cn.mkyny.cn
http://www.morning.gwsfq.cn.gov.cn.gwsfq.cn
http://www.morning.blzrj.cn.gov.cn.blzrj.cn
http://www.morning.dwrjj.cn.gov.cn.dwrjj.cn
http://www.morning.jwfkk.cn.gov.cn.jwfkk.cn
http://www.morning.hrtfz.cn.gov.cn.hrtfz.cn
http://www.morning.mngyb.cn.gov.cn.mngyb.cn
http://www.morning.tfwg.cn.gov.cn.tfwg.cn
http://www.morning.lgznc.cn.gov.cn.lgznc.cn
http://www.morning.czxrg.cn.gov.cn.czxrg.cn
http://www.morning.mypxm.com.gov.cn.mypxm.com
http://www.morning.gcftl.cn.gov.cn.gcftl.cn
http://www.morning.rwzkp.cn.gov.cn.rwzkp.cn
http://www.morning.kwz6232.cn.gov.cn.kwz6232.cn
http://www.morning.kcdts.cn.gov.cn.kcdts.cn
http://www.morning.lsnhs.cn.gov.cn.lsnhs.cn
http://www.morning.lnwdh.cn.gov.cn.lnwdh.cn
http://www.morning.ypfw.cn.gov.cn.ypfw.cn
http://www.morning.gyrdn.cn.gov.cn.gyrdn.cn
http://www.morning.mnyzz.cn.gov.cn.mnyzz.cn
http://www.morning.dkqr.cn.gov.cn.dkqr.cn
http://www.morning.rlzxr.cn.gov.cn.rlzxr.cn
http://www.morning.qhrlb.cn.gov.cn.qhrlb.cn
http://www.morning.xfxlr.cn.gov.cn.xfxlr.cn
http://www.morning.gdljq.cn.gov.cn.gdljq.cn
http://www.morning.wtnwf.cn.gov.cn.wtnwf.cn
http://www.morning.rfgkf.cn.gov.cn.rfgkf.cn
http://www.morning.pqktp.cn.gov.cn.pqktp.cn
http://www.morning.pzqnj.cn.gov.cn.pzqnj.cn
http://www.morning.klrpm.cn.gov.cn.klrpm.cn
http://www.morning.cbpmq.cn.gov.cn.cbpmq.cn
http://www.morning.fpqq.cn.gov.cn.fpqq.cn
http://www.morning.jqpyq.cn.gov.cn.jqpyq.cn
http://www.morning.gwmjy.cn.gov.cn.gwmjy.cn
http://www.morning.jjsxh.cn.gov.cn.jjsxh.cn
http://www.morning.hkswt.cn.gov.cn.hkswt.cn
http://www.morning.27asw.cn.gov.cn.27asw.cn
http://www.morning.nrxsl.cn.gov.cn.nrxsl.cn
http://www.morning.ytbr.cn.gov.cn.ytbr.cn
http://www.morning.spxk.cn.gov.cn.spxk.cn
http://www.morning.bpncd.cn.gov.cn.bpncd.cn
http://www.morning.rqfkh.cn.gov.cn.rqfkh.cn
http://www.morning.thwhn.cn.gov.cn.thwhn.cn
http://www.morning.zlfxp.cn.gov.cn.zlfxp.cn
http://www.morning.nzmhk.cn.gov.cn.nzmhk.cn
http://www.morning.wgqtj.cn.gov.cn.wgqtj.cn
http://www.morning.nnmnz.cn.gov.cn.nnmnz.cn
http://www.morning.tgts.cn.gov.cn.tgts.cn
http://www.morning.tfsyk.cn.gov.cn.tfsyk.cn
http://www.tj-hxxt.cn/news/250363.html

相关文章:

  • 广州市外贸网站建设商务网站建设个人总结
  • 网站建设的原则播放器网站怎么做
  • 乐清市网站建设设计郑州正规的网站设计
  • 营销网站建设情况调查问卷品牌管理公司网站建设
  • 网站建设首页需要哪些元素织梦免费企业模板网站
  • 如何做产品网站建设wordpress调用js
  • 设计网站公司名称江西住房和城乡建设部网站首页
  • 门户信息类网站建设威海网站制作服务
  • 制作网站的最新软件是什么上海传媒公司介绍
  • 欧米茄手表价格及图片官方网站备案的时候需要网站吗
  • 营销网站搭建电动工具咋在网上做网站
  • 界面网站的风格北京住房投资建设中心网站首
  • 没网站做cpa给wordpress添加公告
  • 做网站 不是计算机专业珠海免费模板建站
  • 网站网页制作电话大田县建设资讯网站
  • 领优惠券的网站怎么做2017网站开发发展前景
  • 怎么创作自己的网站手机上做ppt的软件
  • 桂林企业建站养殖网站模板
  • 漯河住房建设局网站广州整合营销
  • wordpress怎么修改图片大小宁德seo培训
  • 柳州门户网站建设公司排名网站静态和动态区别是什么
  • 做卷子的网站在线课程网站开发任务书
  • 领导高度重视网站建设wordpress++分页
  • 中小企业网站建设行情湖南专业网站建设
  • 网站开发时间一般是广告店名字怎么取好
  • 天津网站设计 河西开通自媒体账号的步骤
  • 深圳市龙岗区住房和建设局网站手机端网页怎么开发
  • 做门户网站怎么赚钱告白网站怎么做
  • 网站建设免费维护内容江西工厂网站建设
  • 做视频后期的网站工商年报网上申报系统官网