该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

return不可能返回数组,于是子hanshu1quicksort最后没有用return,但是没有return又怎么可以更改a[N]?主函数中的quicksort(a, 0, N - 1);将a[N]复制后传递给形参a,quicksort(a, 0, N - 1);应该是只对a[N]的副本进行排序,最后输出的顺序应该和输入的一样,相当于没有排,但是结果却是排了,这是怎样实现的?和理论不是矛盾吗?

/*********************************************************

* From C PROGRAMMING: A MODERN APPROACH, Second Edition *

* By K. N. King *

* Copyright (c) 2008, 1996 W. W. Norton & Company, Inc. *

* All rights reserved. *

* This program may be freely distributed for class use, *

* provided that this copyright notice is retained. *

*********************************************************/

/* qsort.c (Chapter 9, page 207) */

/* Sorts an array of integers using Quicksort algorithm */

#include

#define N 10

void quicksort(int a[], int low, int high);

int split(int a[], int low, int high);

int main(void)

{

int a[N], i;

printf("Enter %d numbers to be sorted: ", N);

for (i = 0; i < N; i++)

scanf("%d", &a[i]);

quicksort(a, 0, N - 1);

printf("In sorted order: ");

for (i = 0; i < N; i++)

printf("%d ", a[i]);

printf("\n");

return 0;

}

void quicksort(int a[], int low, int high)

{

int middle;

if (low >= high) return;

middle = split(a, low, high);

quicksort(a, low, middle - 1);

quicksort(a, middle + 1, high);

}

int split(int a[], int low, int high)

{

int part_element = a[low];

for (;;) {

while (low < high && part_element <= a[high])

high--;

if (low >= high) break;

a[low++] = a[high];

while (low < high && a[low] <= part_element)

low++;

if (low >= high) break;

a[high--] = a[low];

}

a[high] = part_element;

return high;

}

快速排序 数组 函数 c语言,书上快速排序程序中子函数是怎样更改数组的?理论上不可实现啊...相关推荐

  1. 快速傅里叶变换c语言函数,C语言实现FFT(快速傅里叶变换)

    while(1); } #include #include /********************************************************************* ...

  2. c语言常用数学函数大全查询,C语言数学函数 C语言中全部可用的数学函数有哪些?...

    导航:网站首页 > C语言数学函数 C语言中全部可用的数学函数有哪些? C语言数学函数 C语言中全部可用的数学函数有哪些? 相关问题: 匿名网友: /*--------------------- ...

  3. c语言形参指针 实参数组,《C语言程序设计》中的指针形参和函数体中数组实参问题的教学研究.pdf...

    <C语言程序设计>中的指针形参和函数体中数组实参问题的教学研究.pdf C C <CC语言程序设计>中的指针形参和函数体中数组实参问题的教学研究 山东理工大学计算机学院 董敬富 ...

  4. 指针数组下标JAVA_Java语言中可用下标和指针两种方式表示数组元素。

    [判断题]一行可以写多条预处理命令 [判断题]如果一个java程序中有多个类,编译后只生成一个字节码文件,其名字同主类名一致. [判断题]Protected类型的实例变量只能在本类中使用,其他类中不可 ...

  5. 数字转字符函数_C语言常用的几个工具函数

    1.字符串转十六进制 代码实现: void StrToHex(char *pbDest, char *pbSrc, int nLen){ char h1,h2; char s1,s2; int i;f ...

  6. R语言中dim函数_R语言--向量化计算(apply族函数)

    R语言最优秀的是它的向量化编程,这其中apply族函数扮演了非常重要的角色.apply族函数是由apply.sapply.lapply.mapply.tapply等函数组成的.熟练使用apply族函数 ...

  7. sprintf函数_C语言源代码展示:常用转换函数实现原理

    编程时经常用到进制转换.字符转换.比如软件界面输入的数字字符串,如何将字符串处理成数字呢?和大家分享一下. 01 字符串转十六进制 代码实现: void StrToHex(char *pbDest, ...

  8. c语言何编写自定义函数,C语言菜鸟基础教程之自定义函数

    C语言菜鸟基础教程之自定义函数 先动手编写程序: #include int add(int x, int y) { int z = x + y; return z; } int main() { in ...

  9. c语言中removeDir的相反函数,C语言编程常见问题解答之常用函数的包括文件.doc

    C语言编程常见问题解答之常用函数的包括文件 C语言编程常见问题解答之常用函数的包含文件(1) 作者:unknown 更新时间: 2005-05-10 函数 包含 类别 功能 _atold math.h ...

最新文章

  1. ACMNO.49:一元三次方程求解(主要就是精度问题)
  2. 错误: 程序包r2不存在_坚果 R2 使用体验:它是一款真旗舰,也是不一样的旗舰...
  3. Jetty 开发指南:嵌入式开发示例
  4. PHP开发环境MAMP for Windows
  5. 腾讯AI Lab发布「电竞虚拟人」,视频版本一次看!
  6. Docker新手入门:基本用法
  7. 百度MIP页规范详解 —— canonical标签
  8. 数据链路层差错检验循环冗余码过程图示
  9. azure机器学习_我如何打造一款赢得2016 Azure机器学习奖的游戏
  10. VSCode插件-萌妹音彩虹屁,还需要鼓励师作甚?
  11. 【C++OJ多重继承与虚拟继承】商旅信用卡(多重继承)
  12. 串口转以太网项目开发(1)-- 修改默认的设备树文件
  13. 智慧树python数据分析与数据可视化_智慧树知到Python数据分析与数据可视化答案免费查询...
  14. 如何查看自己是否被微信好友删除
  15. 学校计算机社团面试自我介绍ppt,大学生大一社团面试自我介绍PPT
  16. 解决idea上传文件到svn频繁报错 “Error:Node remians in conflict”、“remains in conflict”
  17. win10 桌面的的文件都不见了 提示不注销保存都文件都为临时_你的电脑垃圾文件再不清理就要留到牛年了!...
  18. java创建动态二维数组
  19. 使用pgpool-ii 搭建postgresql 高可用、负载均衡架构
  20. van-popup() 点击空白处关闭弹窗

热门文章

  1. [渝粤教育] 郑州航空工业管理学院 航空概论 参考 资料
  2. ssm如何支持热部署_Java 调式、热部署、JVM 背后的支持者 Java Agent
  3. matlab写出二维数组
  4. probability space 概率空间,Filtration,σ-algebras
  5. 修改网站首页批处理_几个神奇的批处理,万事不求人!
  6. java高级编程期末考试题_java高级编程考题
  7. java代码快速_java代码编写快捷途经
  8. 三个世界及其有关概念
  9. c语言中aver是什么意思_Linux系统top命令中的io使用率,到底是什么意思?
  10. 管理角色认知-新晋管理常常犯的错