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

扶沟县网站开发交换神器

扶沟县网站开发,交换神器,精准获客,服务器有了怎么做网站回顾递归的快速排序,都是先找到key中间值,然后递归左区间,右区间。 那么是否可以实现非递归的快排呢?答案是对的,这里需要借助数据结构的栈。将右区间左区间压栈(后进先出),然后取出…

        回顾递归的快速排序,都是先找到key中间值,然后递归左区间,右区间。

        那么是否可以实现非递归的快排呢?答案是对的,这里需要借助数据结构的。将右区间左区间压栈(后进先出),然后取出左区间,再将左区间的子右区间和子左区间压栈,再取出左区间的子左区间......,当栈为空时,即全部取出,此时已经有序。f2411c060f1945129eabf66cf4da911c.png

5b3c8442dda544c1a16c2f3b9d702693.png 

 

        和递归一样,首先用三数取中来优化:

//三数取中
int GetMidi(int* arr, int begin, int end)
{int midi = (begin + end) / 2;if ((arr[begin] > arr[midi] && arr[begin] < arr[end])|| (arr[begin]) > arr[end] && arr[begin] < arr[midi])midi = begin;if ((arr[end] > arr[midi] && arr[end] < arr[begin])|| (arr[end]) > arr[begin] && arr[end] < arr[midi])midi = end;return midi;
}

        接着借用递归快排的指针法,来进行单趟排序,得到中间基准值,并划分做右区间(不记得指针法的回看博客)

int QuickSort_pointer_incline(int* arr, int begin, int end)
{int midi = GetMidi(arr, begin, end);Swap(&arr[begin], &arr[midi]);int keyi = begin;int prev = begin, cur = prev + 1;while (cur <= end){if (arr[cur] < arr[keyi] && ++prev != cur)Swap(&arr[prev], &arr[cur]);++cur;}Swap(&arr[prev], &arr[keyi]);keyi = prev;return keyi;
}

        最后使用栈来压栈出栈

void QuickSort_NonR_incline(int* arr, int begin, int end)
{ST s;STInit(&s);//放入端点//因为后进先出,所以先入右,后入左,区间[左,右]STPush(&s, end);STPush(&s, begin);while (!STEmpyty(&s)){//出栈int left = STTop(&s);STPop(&s);int right = STTop(&s);STPop(&s);//指针单趟排序int keyi = QuickSort_pointer_incline(arr, left, right);//[left,keyi-1],keyi,[keyi+1,right]//入右区间,同样先入右区间的右端点,再左端点if (keyi + 1 < right){STPush(&s, right);STPush(&s, keyi + 1);}//入左区间,同样先入左区间的右端点,再左端点if (left < keyi - 1){STPush(&s, keyi - 1);STPush(&s, left);}//循环回去,又取出区间,再次单趟排序后,又入子右区间,子左区间}STDestroy(&s);
}

 

 

http://www.yidumall.com/news/39433.html

相关文章:

  • 青岛开发区 网站建设sem是什么基团
  • 中国人做英文网站外贸网站有哪些
  • 社保个人网站入口苏州疫情最新消息
  • 做临时工看哪个网站seo专业术语
  • 做网站好公司哪家好360手机优化大师下载
  • 杭州的设计网站建设好的在线crm系统
  • 手机怎么做自己的网站推广软件app
  • 服装技术支持东莞网站建设哪些平台可以免费发布产品
  • 高端大气传媒公司名字潍坊seo培训
  • 贵州省安顺市网站建设有没有专门帮人推广的公司
  • 怎么免费上传网页网站视频外链平台
  • 十大品牌排行榜前十名优化网络软件
  • 做网站的靠什么赚钱临沂森佳木业有限公司
  • 摄影网站难做吗上海搜索引擎优化1
  • 深圳的设计网站公司西安网站seo厂家
  • 做网站要服务器和什么谷歌推广外贸建站
  • 东莞网络公司网站建设专业seo网络推广
  • wordpress主题列表封面徐州seo推广
  • wamp环境下做网站国际军事最新消息今天
  • 怎样制作静态网站推广关键词排名方法
  • 动画设计属于什么类专业蚌埠seo外包
  • 制作网站的手机软件网页制作软件手机版
  • 建设工程公司 网站网络营销课程去哪里学
  • 建设购物网站百度网盘客服电话
  • 外贸网站contact百度网页版浏览器
  • 电子元器件网站建设长沙seo排名扣费
  • 网站的所有权辽宁seo推广
  • 创业做社交网站有哪些怎么制作一个简单的网页
  • 建设银行网站怎么短信转账百度打开百度搜索
  • 如何推进政府网站建设方案网站seo分析工具