`
carolaif
  • 浏览: 70309 次
  • 性别: Icon_minigender_2
  • 来自: 大连
最近访客 更多访客>>
社区版块
存档分类
最新评论

C程序 递归小例子 快速排序

阅读更多

从执行速度来讲,下列版本的快速排序可能不是最快的,但是它是最简单的算法之一。在每次划分子集时,该算法总是选取各个子数组的中间元素,(作为划分子集的基准)。

 

/* qsort:  以递增顺序对v[left]...v[right]进行排序 */
   void qsort(int v[], int left, int right)
   {
       int i, last;
       void swap(int v[], int i, int j);
	     if (left >= right) /* 若数组包含的元素数少于两个 */
           return;        /* 则不执行任何操作 */
       swap(v, left, (left + right)/2); /* 将划分子集的元素 */
       last = left;                     /* 移动到v[0] */
       for (i = left + 1; i <= right; i++)  /* 划分子集 */
           if (v[i] < v[left])
               swap(v, ++last, i);
       swap(v, left, last);            /* 恢复划分子集的元素(很可能不再是之前的位置,因为此时last可能不等于(left+right)/2) */
       qsort(v, left, last-1);
       qsort(v, last+1, right);
   }

 

分享到:
评论

相关推荐

    C语言课程设计之二快速排序(C源码).zip

    C语言课程设计之二快速排序(C源码) 10个数据结构课程设计例子 查找.c 二叉排序树.c 二叉树层次遍历.c 二叉树非递归遍历.c 二叉树建立.c 快速排序.c 括号匹配.c 冒泡排序.c 直接插入排序.c 直接选择排序.c

    10个数据结构课程设计实例二叉树建立遍历冒泡排序快速排序等.zip

    c 代码 10个数据结构课程设计例子 查找.c 二叉排序树.c 二叉树层次遍历.c 二叉树非递归遍历.c 二叉树建立.c 快速排序.c 括号匹配.c 冒泡排序.c 直接插入排序.c 直接选择排序.c

    C语言课程设计之二叉树非递归遍历(C源码).zip

    C语言课程设计之二叉树非递归遍历(C源码) 10个数据结构课程设计例子 查找.c 二叉排序树.c 二叉树层次遍历.c 二叉树非递归遍历.c ...快速排序.c 括号匹配.c 冒泡排序.c 直接插入排序.c 直接选择排序.c

    谭浩强C语言程序设计,C++程序设计,严蔚敏数据结构,高一凡数据结构算法分析与实现.rar )

    4 最简单的 C程序设计—顺序程序设计 4.1 C语句概述 51 4.2 赋值语句 53 4.3 数据输入输出的概念及在 C 语言中的实现 54 4.4 字符数据的输入输出 54 4.4.1 putchar 函数(字符输出函数) 54 4.4.2 getchar函数...

    Intel汇编语言程序设计 第四版

    ·所有的例子程序都在Microsoft的MASM 6.15编译器下测试通过 ·讲述了高级语言内嵌汇编代码以及汇编语言程序同实地址模式及保护模式的C/C++程序的链接 ·附带扩展的指令集手册,其中包含了指令格式和CPU标志的使用...

    程序设计方法.[美]Matthias Felleisen(带书签文字版).pdf

    25.2 快速排序 236 第26章 设计算法 239 26.1 终止 240 26.2 结构递归和生成递归的比较 243 26.3 做出选择 243 第27章 主题的变更 246 27.1 分形 247 27.2 从文件到行,从表到表的表 251 27.3 二分查找 254...

    程序设计方法(How_To_Design_Programs)-MIT.pdf

    25.2 快速排序 244 第26章 设计算法 248 26.1 终止 249 26.2 结构递归与生成递归的比较 251 26.3 做出选择 252 第27章 主题的变更 256 27.1 分形 256 27.2 从文件到行,从表到表的表 260 27.3 二分查找 263 27.4 ...

    谭浩强C语言程序设计,C++程序设计,严蔚敏数据结构,高一凡数据结构算法分析与实现.rar

    4 最简单的 C程序设计—顺序程序设计 4.1 C语句概述 51 4.2 赋值语句 53 4.3 数据输入输出的概念及在 C 语言中的实现 54 4.4 字符数据的输入输出 54 4.4.1 putchar 函数(字符输出函数) 54 4.4.2 getchar函数...

    Java数据结构和算法中文第二版(2)

    快速排序 基数排序 小结 问题 实验 编程作业 第8章 二叉树 为什么使用二叉树? 树的术语 一个类比 二叉搜索树如何工作 查找节点 插入一个节点 遍历树 查找最大值和最小值 删除节点 二叉树的效率 ...

    C语言课程设计之冒泡排序(C源码).zip

    C语言课程设计之冒泡排序(C源码) 10个数据结构课程设计例子 查找.c 二叉排序树.c 二叉树层次遍历.c 二叉树非递归遍历.c 二叉树建立.c 快速排序.c 括号匹配.c 冒泡排序.c 直接插入排序.c 直接选择排序.c

    数据结构与算法研究(强烈推荐)

    对以下四种算法详细地进行了分析:插入排序、希尔排序、堆排序以及快速排序。堆排序平均情形运行时间的分析对于这一版来说是新的内容。本章末尾讨论了外部排序。 第8章讨论不相交集算法并证明其运行时间。这是短且...

    Java数据结构和算法中文第二版(1)

    快速排序 基数排序 小结 问题 实验 编程作业 第8章 二叉树 为什么使用二叉树? 树的术语 一个类比 二叉搜索树如何工作 查找节点 插入一个节点 遍历树 查找最大值和最小值 删除节点 二叉树的效率 ...

    C语言课程设计之直接选择排序(C源码).zip

    C语言课程设计之直接选择排序(C源码) 10个数据结构课程设计例子 查找.c 二叉排序树.c 二叉树层次遍历.c 二叉树非递归遍历.c ...快速排序.c 括号匹配.c 冒泡排序.c 直接插入排序.c 直接选择排序.c

    C语言课程设计之直接插入排序(C源码).zip

    C语言课程设计之直接插入排序(C源码) 10个数据结构课程设计例子 查找.c 二叉排序树.c 二叉树层次遍历.c 二叉树非递归遍历.c ...快速排序.c 括号匹配.c 冒泡排序.c 直接插入排序.c 直接选择排序.c

    C语言课程设计之二叉树层次排序(C源码).zip

    C语言课程设计之二叉树层次排序(C源码) 10个数据结构课程设计例子 查找.c 二叉排序树.c 二叉树层次遍历.c 二叉树非递归遍历.c ...快速排序.c 括号匹配.c 冒泡排序.c 直接插入排序.c 直接选择排序.c

    数据结构与算法分析_Java_语言描述

    7.2.1 算法 7.2.2 插入排序的分析 7.3 一些简单排序算法的下界 7.4 希尔排序 7.5 堆排序 7.6 归并排序 7.7 快速排序 7.7.1 选取枢纽元 7.7.2 分割策略 7.7.3 小数组 7.7.4 实际的快速排序例程 ...

    Intel汇编语言程序设计(第四版)

    ·所有的例子程序都在Microsoft的MASM 6.15编译器下测试通过 ·讲述了高级语言内嵌汇编代码以及汇编语言程序同实地址模式及保护模式的C/C++程序的链接 ·附带扩展的指令集手册,其中包含了指令格式和CPU标志的使用...

    TestPrograms:围绕DS和算法的各种测试程序

    快速排序示例 递归示例 日期格式示例 从适当的位置删除字符串中的重复项。 反向链接的第一个例子 跳过总和。 字符串中所有可能的组合 所有Tree遍历示例。 添加以字符串表示的二进制数字。 添加以字符串表示的十...

Global site tag (gtag.js) - Google Analytics