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

免费网站下载大全网站建设公司调查报告

免费网站下载大全,网站建设公司调查报告,wordpress影音,兰州小的网络公司快速排序的非递归 我们写快速排序的时候#xff0c;通常用的递归的方法实现快速排序#xff0c;那么有没有非递归的方法实现快速排序呢#xff1f;肯定是有的。思想还是一样的#xff0c;不过非递归是看似是非递归其实还是递归。 思路解释 快速排序的非递归使用的是栈这…快速排序的非递归 我们写快速排序的时候通常用的递归的方法实现快速排序那么有没有非递归的方法实现快速排序呢肯定是有的。思想还是一样的不过非递归是看似是非递归其实还是递归。 思路解释 快速排序的非递归使用的是栈这个数据结构。我们知道栈是后入先出和先入后出的所以我们可以通过栈的方式模拟递归然后实现快速排序的非递归。 如图所示创建一个栈。然后首先先将数组的起始和末尾的下标存进栈中然后让leftbeginrightend并pop出去。然后进行一次快排找到keyi。此时如果keyi两边的区间绿色的存在就把keyi也存进栈。然后进行一次快排当区间为空或者区间值有序就把值从栈中pop出来如果不是就继续push进去直到栈为空。最后别忘了把栈给销毁。 代码 int GetMidi(int* a, int begin, int end) {int midi (begin end) / 2;if (a[begin] a[midi]){if (a[midi] a[end])return midi;else if (a[begin] a[end])return begin;elsereturn end;}else{if (a[midi] a[end])return midi;else if (a[begin] a[end])return begin;elsereturn end;} } int PSort(int* a, int begin, int end) {int midi GetMidi(a, begin, end);Swap(a[midi], a[begin]);int key begin;int prev begin;int cur prev 1;while (cur end){if (a[cur] a[key] prev ! cur)Swap(a[cur], a[prev]);cur;}Swap(a[key], a[prev]);key prev;return key; } void QuickSortNonR(int* a, int begin, int end) {ST s;STInit(s);STPush(s, end);STPush(s, begin);while (!STEmpty(s)){int left STTop(s);STPop(s);int right STTop(s);STPop(s);int keyi PSort(a, left, right);// [left, keyi-1] keyi [keyi1, right]if (left keyi - 1){STPush(s, keyi - 1);STPush(s, left);}if (keyi 1 right){STPush(s, right);STPush(s, keyi 1);}}STDestroy(s); }下面是栈的头文件和.c文件 #include stdio.h #includeassert.h #includestdlib.h #includestdbool.h typedef struct Stack {int* a;int top; // 标识栈顶位置的int capacity; }ST; void STInit(ST* pst);//初始化栈 void STDestroy(ST* pst);//栈的销毁 void STPush(ST* pst, int x);//栈顶插入 void STPop(ST* pst);//栈顶删除 int STTop(ST* pst);//获取栈顶元素 bool STEmpty(ST* pst);//检查栈是否为空 int STSize(ST* pst);//获取栈中元素的个数 #include stack.h void STInit(ST* pst) {/*ST* tmp (ST*)malloc(sizeof(ST));if (tmp NULL){perror(malloc);return;}*/pst-a NULL;pst-top -1;pst-capacity 0; } void STPush(ST* pst, int x) {assert(pst);if (pst-top pst-capacity - 1){int newcapacite pst-capacity 0 ? 4 : pst-capacity * 2;int* tmp (int*)realloc(pst-a, newcapacite * sizeof(int));if (tmp NULL){perror(realloc);return;}pst-a tmp;pst-capacity newcapacite;}pst-a[pst-top 1] x;pst-top; } void STPop(ST* pst) {assert(pst);pst-top--; } int STTop(ST* pst) {assert(pst);if (pst-top -1){printf(此栈为空);return 1;}return pst-a[pst-top]; } bool STEmpty(ST* pst) {assert(pst);return pst-top -1; } int STSize(ST* pst) {assert(pst);return pst-top; } void STDestroy(ST* pst) {assert(pst);free(pst-a);pst-a NULL;pst-capacity 0;pst-top -1;}
http://www.hyszgw.com/news/91451/

相关文章:

  • .net网站开发源码旅游网站建设服务对象
  • 网站该怎么找到网店代运营协议
  • 手机论坛网站源码在线查询网站开发语言
  • 个人做的网站百度搜索不到nas 支持做网站
  • 做网站需要学会做哪些东西竞价代运营公司哪家好
  • 网站开发设计流程图公司做网站域名归谁
  • 印刷网站开发的可行性报告全国造价工程师管理系统官网
  • 湖北餐饮网站建设网站建设合同的结构
  • 建设银行网站可以更改个人电话购物网站建设收费
  • 全网搜索软件下载行者seo无敌
  • 做网站优化有什么好处有户型图怎么免费设计装修
  • 网站免费申请空间上海网站建设企业排名
  • 网站建设公司投诉电话大型广告公司有哪些
  • 佛山市骏域网站建设wordpress 移动端双模板
  • 西安网站开发定制制作哪一款软件可以自己做网站
  • 网站开发需要服务器吗在网站上做教育直播平台多少钱
  • 现在都不用dw做网站了吗wordpress 文章查看次数
  • 漳州网站建设选博大不错wordpress 多语言主题
  • 创意设计公司网站自己开发一个wordpress主题
  • 产品设计方案模板范文广州百度推广优化排名
  • 伪静态网站如何选择顺德网站建设
  • 桂林旅游网官方网站浙江省建设信息网站
  • 营销型网站开发山东企业展厅设计公司
  • 嘉兴网站建设网站定制开发一款小程序多少钱
  • 景宁建设局网站免费网站看完你会回来感谢我的
  • html5农业网站模板为网站添加统计
  • 如何做网站新手个人教程win7 做网站好吗
  • 网站备案通过后怎么办房产网站建设什么类型
  • 湖北专业网站建设市面价国外vps私人
  • 网站所有权 备案人力资源公司加盟合作