数据结构学习笔记之快速排序(非递归)

代码如下:

#include<assert.h>
#include<memory.h>
//快速排序(升序)
void QuickSort(int *a, int size)
{int *low, *high, up, down, temp, counter, len;len = (size - 1) * 2;//上下限数组长度low = new int[len];//待排序数组的下限数组high = new int[len];//待排序数组的上限数组assert(low != 0);//断言low不为空assert(high != 0);//断言high不为空memset(low, 0, sizeof(int)*len);//初始化为0memset(high, 0, sizeof(int)*len);//初始化为0high[0] = size - 1;//初始上限为数组最后一个元素的下标counter = 0;//计数器:计算排序过程中产生的上下限组数for (int i = 0; i < len; i++)//遍历上下限数组{if (high[i] > low[i])//如果上限大于下限,则需要排序{up = low[i];down = high[i];temp = a[up];//选取下限所对应的元素为基准值while (up != down){while (up != down){if (a[down] < temp)//如果数组后面的元素a[down]比基准值小,则把该元素搬到数组前面的空位,并且退出while循环{a[up] = a[down];break;}else{down--;//如果数组后面的元素a[down]大于或等于基准值,则继续向前寻找比基准值小的元素}}//whilewhile (up != down){if (a[up] > temp)//如果数组前面的元素a[uo]比基准值大,则把该元素搬到数组后面的空位,并且退出while循环{a[down] = a[up];break;}else{up++;//如果数组前面面的元素a[up]小于或等于基准值,则继续向后寻找比基准值大的元素}}//while}//whilea[up] = temp;//此时up等于down,该位置为基准值最终排序位置low[++counter] = low[i];//基准值左边待排序数组下限high[counter] = up - 1;//基准值左边待排序数组上限low[++counter] = up+1;//基准值右边待排序数组下限high[counter] = high[i];//基准值右边待排序数组上限}//if}//for    //释放动态分配的数组空间delete[]low;delete[]high;
}

数据结构学习笔记之快速排序(非递归)相关推荐

  1. 数据结构学习笔记(王道)

    数据结构学习笔记(王道) PS:本文章部分内容参考自王道考研数据结构笔记 文章目录 数据结构学习笔记(王道) 一.绪论 1.1. 数据结构 1.2. 算法 1.2.1. 算法的基本概念 1.2.2. ...

  2. 数据结构学习笔记(六):二叉树(Binary Tree)

    目录 1 背景知识:树(Tree) 2 何为二叉树(Binray Tree) 2.1 二叉树的概念与结构 2.2 满二叉树与完全二叉树 2.3 二叉树的三种遍历方式 3 二叉树及其遍历的简单实现(Ja ...

  3. 数据结构 - 学习笔记 - 红黑树

    数据结构 - 学习笔记 - 红黑树 定义 简介 知识点 1. 结点属性 2. 前驱.后继 3. 旋转 查找 插入 父结点为黑色 父结点为红色 1. 有4种情形只需要变色(对应234树4结点) 1.1. ...

  4. 数据结构学习笔记(3-5):树

    附录:所有blog的链接 数据结构学习笔记(1):基本概念 数据结构学习笔记(2):线性结构 数据结构学习笔记(3-5):树 数据结构学习笔记(6-8):图 数据结构学习笔记(9-10):排序 数据结 ...

  5. 数据结构学习笔记(七):哈希表(Hash Table)

    目录 1 哈希表的含义与结构特点 1.1 哈希(Hash)即无序 1.2 从数组看哈希表的结构特点 2 哈希函数(Hash Function)与哈希冲突(Hash Collision) 2.1 哈希函 ...

  6. 数据结构学习笔记(五):重识字符串(String)

    目录 1 字符串与数组的关系 1.1 字符串与数组的联系 1.2 字符串与数组的区别 2 实现字符串的链式存储(Java) 3 子串查找的简单实现 1 字符串与数组的关系 1.1 字符串与数组的联系 ...

  7. 数据结构学习笔记(四):重识数组(Array)

    目录 1 数组通过索引访问元素的原理 1.1 内存空间的连续性 1.2 数据类型的同一性 2 数组与链表增删查操作特性的对比 2.1 数组与链表的共性与差异 2.2 数组与链表增删查特性差异的原理 3 ...

  8. 数据结构学习笔记:实现链表

    数据结构学习笔记:实现链表 1.结点结构 结点结构是由数据域和指针域组成,数据域是存放数据的,而指针域存放下一结点的地址. 2.链表结构 通过数据域访问到我们要的数据,而通过指针域访问到当前结点以后的 ...

  9. 考研数据结构学习笔记1

    考研数据结构学习笔记1 一.绪论 1.基本概念和术语 2.数据结构三要素 2.1逻辑结构 2.1.1 集合结构 2.1.2 线性结构:一对一 2.1.3 树形结构:一对多 2.1.4 图状结构:多对多 ...

最新文章

  1. 在cmd的方式下,简化mysql的输入的方法
  2. Bugku-CTF之flag在index里
  3. 【Python】8000字:Python时间系列之datetime模块
  4. Bash 实例,第 2 部分
  5. 下列python语言、返回结果不是uc_MKAN1-UC 5103作业代写、代做Analytics作业、Java,Python,c/c++程序语言作业代做...
  6. 北航 2012 秋季 现代软件工程 团队项目要求
  7. Siri在苹果继续活着、蠢着、没落着,现在它最后一个创始人也走了
  8. 效果良好!构造一个输入速度的神经网络,以DQN方式实现小游戏的自动控制
  9. 帆软日期格式转换_FineReport帆软报表相关学习笔记,纪要
  10. SQL每日学习——insert into语句
  11. win10升级助手_Win10系统易升如何彻底关闭?「系统天地」
  12. 爬虫小程序 - 周杰伦歌曲
  13. Web前端面试 面试官常问问题
  14. 各类杀软对应的进程名
  15. Node版本管理工具
  16. php update when,iphone will restart when update什么意思
  17. buuctf pwn wp(第四波)格式化字符串漏洞系列
  18. git/码云+npm语法
  19. C和OpenGL结合生成钻石图形的解决方案
  20. 李善友:中国可以活3年以上的企业不到10%

热门文章

  1. 风很大的PMP证书真有这么厉害?这是被腾讯/华为招聘时所提到过的证书
  2. 蚂蚁金服上市了,我不想努力了
  3. Microsoft Excel 教程:如何在 Excel 中使用数字格式?
  4. 零点极点传递函数以及伯德图
  5. 渗透利器 | 提权辅助工具箱
  6. 【译】如何提高工作效率——HOWTO: Be more productive
  7. 数据库--------视图
  8. USART_IT与USART_FLAG,USART_GetITStatus与 USART_GetFlagStatus
  9. RedHat7安装Systemc 编译仿真
  10. 前端如何获取电池信息?