早教吧 育儿知识 作业答案 考试题库 百科 知识分享

C语言实验题绝对值排序描述输入n(n<=100)个整数,按照绝对值从大到小排序后输出。题目保证对于每一个测试实例,所有的数的绝对值都不相等。输入输入数据有多组,每组占一行,每

题目详情
C语言实验题 绝对值排序描述 输入n(n<=100)个整数,按照绝对值从大到小排序后输出。题目保证对于每一个测试实例,所有的数的绝对值都不相等。 输入 输入数据有多组,每组占一行,每行的第一个数字为n,接着是n个整数,n=0表示输入数据的结束,不做处理。 输出 对于每个测试实例,输出排序后的结果,两个数之间用一个空格隔开。每个测试实例占一行。 样例输入 3 3 -4 2 4 0 1 2 -3 0样例输出 -4 3 2 -3 2 1 0 (这个问题其他我都懂,就是对于输入的一系列数,怎么对其进行绝对值排序,然后还要按原值进行排序输出。也就是最核心的问题我不懂。请高手指教。)
▼优质解答
答案和解析
任何排序算法都涉及到被排序元素间的“比较”操作,排序算法根据元素比较的结果执行相应的元素移动操作,因此,“比较”过程与“移动”过程是相互独立的,也就是说如何比较是可任意定义的,你的这个问题可以使用任意一种排序算法进行排序,唯一要求的是你必须额外提供一个比较函数,该比较函数中执行的是绝对值比较而不是真值比较,C语言的库函数 void qsort(void *base, size_t num, size_t width, int(__cdecl*compare)(const void *elem1, const void *elem2));就可以完成你的任务,其中的参数compare就是一个执行比较操作的函数指针。