博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
快排的递归和非递归C++
阅读量:5151 次
发布时间:2019-06-13

本文共 1848 字,大约阅读时间需要 6 分钟。

#include
#include
using namespace std;//递归版本void quickSort(int A[],int s,int t){ if (s >= t){ return; } int i = s; int j = t + 1; while (true){ do{ i++; } while (A[i] < A[s]&&i
A[s]&&j>s); if (i < j){ std::swap(A[i], A[j]); } else{ std::swap(A[s], A[j]); break; } } quickSort(A, s, j-1); quickSort(A, j+1 , t);}//非递归版本class node{public: int start = 0; int end = 0; node(int _start,int _end){ start = _start; end = _end; }};void quickSort(int A[],node node0){ vector
STACK; int s = -1; int t = -1; STACK.push_back(node0); while (true){ if (STACK.empty()){ return; } else{ node tmp = STACK.back(); STACK.pop_back(); s = tmp.start; t = tmp.end; if (s >= t){ continue; } } int i = s; int j = t + 1; while (true){ do{ i++; } while (A[i]
A[s] && j>s); if (i < j){ std::swap(A[i], A[j]); } else{ std::swap(A[s], A[j]); break; } } STACK.push_back(node(s,j-1)); STACK.push_back(node(j+1,t)); }}int main(){ int A[] = { -1, -2, -3, -4, -5 }; quickSort(A, 0, 4); //递归 int B[] = { -1, -2, -3, -4, -5 }; quickSort(B, node(0, 4)); cout << "递归" << endl; for (int i = 0; i < 5; ++i){ cout << A[i] << endl; } cout << "非递归" << endl; for (int i = 0; i < 5; ++i){ cout << B[i] << endl; } system("pause");}

 

转载于:https://www.cnblogs.com/codeDog123/p/6642265.html

你可能感兴趣的文章
sql 简单的定义变量 声明 输出
查看>>
【Java】使用Eclipse进行远程调试,Linux下开启远程调试
查看>>
js对象属性方法
查看>>
转:JUnit使用指南
查看>>
C++面试题整理(持续更新中)
查看>>
vs2017 git到oschina 方法
查看>>
对Vue为什么不支持IE8的解释之一
查看>>
使用easyUI 为datagrid冻结列
查看>>
开发 web 桌面类程序几个必须关注的细节
查看>>
bzoj 2784: [JLOI2012]时间流逝【树形期望dp】
查看>>
Myeclipse10.7添加本地插件方法
查看>>
Swift - 将字符串拆分成数组(把一个字符串分割成字符串数组)
查看>>
NSRange,判断字符串的各种操作~
查看>>
Java基本数据类型之间赋值与运算归纳
查看>>
Facebook开源软件列表
查看>>
Swift版音乐播放器(简化版),swift音乐播放器
查看>>
iOS中AutoLayer自动布局流程及相关方法
查看>>
使用Git工具下载android源码---带步骤
查看>>
内容版本SecureCRT脚本
查看>>
宋体光标vim高亮显示当前行,列
查看>>