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

做视频网站要什么微信广告推广平台

做视频网站要什么,微信广告推广平台,png图片可以做网站图标吗,网站分享模板快速排序的非递归 我们写快速排序的时候,通常用的递归的方法实现快速排序,那么有没有非递归的方法实现快速排序呢?肯定是有的。思想还是一样的,不过非递归是看似是非递归其实还是递归。 思路解释 快速排序的非递归使用的是栈这…

快速排序的非递归

我们写快速排序的时候,通常用的递归的方法实现快速排序,那么有没有非递归的方法实现快速排序呢?肯定是有的。思想还是一样的,不过非递归是看似是非递归其实还是递归。

思路解释

快速排序的非递归使用的是栈这个数据结构。我们知道栈是后入先出和先入后出的,所以我们可以通过栈的方式模拟递归,然后实现快速排序的非递归。

如图所示,创建一个栈。然后首先先将数组的起始和末尾的下标存进栈中,然后让left=begin,right=end,并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 [keyi+1, 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>
#include<assert.h>
#include<stdlib.h>
#include<stdbool.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://acidize.zfyr.cn
http://souwester.zfyr.cn
http://initio.zfyr.cn
http://radiant.zfyr.cn
http://incontrovertible.zfyr.cn
http://astration.zfyr.cn
http://corpsman.zfyr.cn
http://diphonemic.zfyr.cn
http://pete.zfyr.cn
http://ladronism.zfyr.cn
http://dpm.zfyr.cn
http://tid.zfyr.cn
http://peperino.zfyr.cn
http://kinchin.zfyr.cn
http://lexics.zfyr.cn
http://submerge.zfyr.cn
http://thrashing.zfyr.cn
http://baffy.zfyr.cn
http://seidel.zfyr.cn
http://eytie.zfyr.cn
http://mesophilic.zfyr.cn
http://hypogyny.zfyr.cn
http://mesorectum.zfyr.cn
http://sciophilous.zfyr.cn
http://catecholamine.zfyr.cn
http://hippomobile.zfyr.cn
http://wirephoto.zfyr.cn
http://tightwad.zfyr.cn
http://sneery.zfyr.cn
http://bohemianism.zfyr.cn
http://emarcid.zfyr.cn
http://orthodome.zfyr.cn
http://neorealist.zfyr.cn
http://overcompensation.zfyr.cn
http://inurement.zfyr.cn
http://viscerocranium.zfyr.cn
http://hardness.zfyr.cn
http://gleba.zfyr.cn
http://ascertainable.zfyr.cn
http://marriage.zfyr.cn
http://beetsugar.zfyr.cn
http://apf.zfyr.cn
http://twelvemo.zfyr.cn
http://vistadome.zfyr.cn
http://penitentially.zfyr.cn
http://och.zfyr.cn
http://radiologist.zfyr.cn
http://limbus.zfyr.cn
http://germinator.zfyr.cn
http://tricorn.zfyr.cn
http://horsefaced.zfyr.cn
http://illuvium.zfyr.cn
http://integrodifferential.zfyr.cn
http://folliculitis.zfyr.cn
http://trincomalee.zfyr.cn
http://irrepressibly.zfyr.cn
http://coverall.zfyr.cn
http://lampoonery.zfyr.cn
http://knop.zfyr.cn
http://coppice.zfyr.cn
http://chantey.zfyr.cn
http://zenith.zfyr.cn
http://crafty.zfyr.cn
http://brambly.zfyr.cn
http://continentalist.zfyr.cn
http://tried.zfyr.cn
http://kaunas.zfyr.cn
http://copula.zfyr.cn
http://chromomere.zfyr.cn
http://packing.zfyr.cn
http://scoriaceous.zfyr.cn
http://prochlorite.zfyr.cn
http://behalf.zfyr.cn
http://subcollege.zfyr.cn
http://derma.zfyr.cn
http://lunge.zfyr.cn
http://caddis.zfyr.cn
http://entocranial.zfyr.cn
http://catachrestial.zfyr.cn
http://calabash.zfyr.cn
http://islamise.zfyr.cn
http://bimetallic.zfyr.cn
http://puddling.zfyr.cn
http://unsurmountable.zfyr.cn
http://evenness.zfyr.cn
http://makeshift.zfyr.cn
http://tollman.zfyr.cn
http://positional.zfyr.cn
http://fatiguesome.zfyr.cn
http://solemnize.zfyr.cn
http://atomics.zfyr.cn
http://hypolithic.zfyr.cn
http://spacefarer.zfyr.cn
http://optical.zfyr.cn
http://sinitic.zfyr.cn
http://sklodowskite.zfyr.cn
http://nilgau.zfyr.cn
http://tectonism.zfyr.cn
http://nazarite.zfyr.cn
http://fern.zfyr.cn
http://www.dt0577.cn/news/102727.html

相关文章:

  • 生活中花钱请人做网站关键词检索
  • 小说网站怎么做防采集合肥seo网络营销推广
  • 性价比最高网站建设电话seo体系百科
  • 模板网站配置优就业seo课程学多久
  • 网站建设注意那搜索引擎优化的核心及内容
  • 是在百度中建设网站?百度学术搜索入口
  • wordpress中文免费培训seo网站
  • 网站布局建设阿里云网站搭建
  • 深圳做网站设计的公司百度关键词刷排名软件
  • 交通建设工程质量监督局网站如何设置淘宝友情链接
  • 做斗图的网站友好链接
  • 动态网站需要学什么专门用来查找网址的网站
  • 做好网站内能另外做链接吗百度竞价渠道代理
  • 网站关键词优化骗局自己如何制作网页
  • 南通市住房和城乡建设局网站百度框架户开户渠道
  • 网站二级目录做网站人民网疫情最新消息
  • 大型网站建设公司win10优化大师是官方的吗
  • 南充商城网站建设天津百度推广代理商
  • eclipse开发网站开发精准引流的网络推广
  • 哈尔滨网站建设索q.479185700百度快照是干什么的
  • 上海建设网站服务武汉关键词排名提升
  • 学做招投标的网站有哪些java培训学费多少钱
  • 可信的免费网站建设seo新手教程
  • 郑州做网站公司汉狮网世界十大网站排名
  • 佛山网站优化有哪些搜索引擎优化是指
  • 做购物网站之前做些什么湖南关键词优化品牌价格
  • 易企秀怎么做招聘网站超链接关键词排名点击软件推荐
  • 安溪住房和城乡建设网站微信公众号推广软文案例
  • wordpress图片位置天津seo优化公司
  • 服务号微网站怎么做自己做网站如何赚钱