- 浏览: 78931 次
- 性别:
- 来自: 西安
文章分类
- 全部博客 (70)
- JavaScript经典例子 (16)
- Java经典例子 (5)
- 其他经典例子 (0)
- 待解决的问题 (1)
- 技术难题 (3)
- 生活与工作 (3)
- 每日学习 (1)
- C++ (18)
- 书籍收藏 (2)
- DDDDDDDDDDD (0)
- Java并发编程 (1)
- hibernate (1)
- Ibatis (1)
- 数据库设计 (2)
- 设计模式 (4)
- Guarded Suspension Pattern (0)
- 线程设计模式 (0)
- Java线程设计模式 (1)
- Web标准 (1)
- Linux (1)
- ubuntu (1)
- JavaEE (1)
- 1.android自定义属性 (1)
- MacOS (1)
- 微信开发 (1)
main.c
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include "tQsort.h"
#define NUM 10
int main(){
double arr[NUM];
fillArray(arr, NUM);
printf("before sort:\n");
showArray(arr, NUM);
qsort(arr, NUM, sizeof(double), sortArray);
printf("after sort:\n");
showArray(arr, NUM);
return 0;
}
tQort.c文件
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define TYPE double
/************************************************************************/
/*generator random number to fill double array */
/************************************************************************/
void fillArray(double arr[], int size)
{
int index;
/*Seed the random-number generator with the current time so that
the numbers will be different every time we run.*/
srand((unsigned)time(NULL));
for (index=0; index<size; index++)
{
arr[index] = (double)rand() / (RAND_MAX + 0.1);
}
}
void showArray(double arr[], int size)
{
int index = 0;
for(; index<size; index++)
{
printf("%9.4f", arr[index]);
if(index%6 == 5)
{
printf("\n");
}/*
if(index%6 != 0)
{
printf("\n");
}*/
}
printf("\n");
}
int sortArray(const void *p1, const void *p2)
{
const TYPE *a1 = p1; //得到正确类型的指针
const TYPE *a2 = p2;
if(*a1 > *a2)
{
return 1; //返回1时升序排序,返回-1时降序排序
}
else if(*a1 == *a2)
{
return 0;
}
else
{
return -1; //返回-11时降序排序,返回1时升序排序
}
}
思考:如何排序结构体数组(如struct name staff[100])
提示:修改比较函数,使用strcmp函数
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include "tQsort.h"
#define NUM 10
int main(){
double arr[NUM];
fillArray(arr, NUM);
printf("before sort:\n");
showArray(arr, NUM);
qsort(arr, NUM, sizeof(double), sortArray);
printf("after sort:\n");
showArray(arr, NUM);
return 0;
}
tQort.c文件
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define TYPE double
/************************************************************************/
/*generator random number to fill double array */
/************************************************************************/
void fillArray(double arr[], int size)
{
int index;
/*Seed the random-number generator with the current time so that
the numbers will be different every time we run.*/
srand((unsigned)time(NULL));
for (index=0; index<size; index++)
{
arr[index] = (double)rand() / (RAND_MAX + 0.1);
}
}
void showArray(double arr[], int size)
{
int index = 0;
for(; index<size; index++)
{
printf("%9.4f", arr[index]);
if(index%6 == 5)
{
printf("\n");
}/*
if(index%6 != 0)
{
printf("\n");
}*/
}
printf("\n");
}
int sortArray(const void *p1, const void *p2)
{
const TYPE *a1 = p1; //得到正确类型的指针
const TYPE *a2 = p2;
if(*a1 > *a2)
{
return 1; //返回1时升序排序,返回-1时降序排序
}
else if(*a1 == *a2)
{
return 0;
}
else
{
return -1; //返回-11时降序排序,返回1时升序排序
}
}
思考:如何排序结构体数组(如struct name staff[100])
提示:修改比较函数,使用strcmp函数
发表评论
-
文件夹搜索器
2010-12-21 16:50 1127int Test(char* g_pcDir) { // ... -
封装的createDirectories方法
2010-12-18 10:48 990#include <io.h> #include ... -
堆和栈参考知识
2010-11-10 11:23 911参考知识: 操作系统中的堆和栈 栈:在Windows下,栈是向 ... -
数组和指针的区别
2010-11-10 11:21 974分析一下代码 char *GetString2(void) { ... -
堆和栈(四)
2010-11-10 10:50 10237、对象数组 class Obj { public : ... -
堆和栈(三)
2010-11-10 10:49 9214、计算内存容量 用运算符sizeof可以计算出数组的容量(字 ... -
堆和栈(二)
2010-11-10 10:46 776含有这种错误的函数每被调用一次就丢失一块内存。刚开始时系统的内 ... -
堆和栈(一)
2010-11-10 10:45 8851、内存分配方式有三种: (1)从静态存储区域分配。内存在程 ... -
const关键字
2010-11-05 16:25 841在C++中用const来定义常量,可以替换#define,co ... -
一个简单的算法
2010-11-05 15:18 6651. 设计一个函数:void find1(char array ... -
函数指针与指针函数
2010-11-03 16:06 950假定一个指针指向一个int变量,它保存着这个int变量在内存中 ... -
字符串、数组、指针(二)
2010-11-01 16:36 1162代码二:编译正常,但运行会出现内存错误 char *name ... -
字符串、数组、指针(一)
2010-11-01 16:35 939int iArr[20] = {0}; //将数组中的元素全 ... -
VC插件
2010-10-31 16:11 8071.Visual Assist(强烈推荐 ... -
简单指针的例子
2010-10-30 17:00 892#include <iostream.h> con ... -
C++函数模板
2010-10-26 11:19 865#include<iostream.h> #inc ... -
include指令
2010-10-26 09:28 810#include文件包含指令 关键字: 文件名, #inclu ...
相关推荐
- `base`:指向待排序数组的指针。 - `num`:数组中元素的个数。 - `size`:数组中每个元素的大小(以字节为单位)。 - `compar`:一个比较函数指针,该函数用于确定数组中两个元素的相对顺序。 3. **比较函数*...
qsort 函数的实现原理是使用快速排序算法,通过递归地将数组分成两个部分,然后对每个部分进行排序,最终将整个数组排序。 在使用 qsort 函数时,需要提供一个比较函数 `cmp`,该函数用于比较两个元素的大小。比较...
它是快速排序(Quicksort)算法的一种实现,能够高效地对数组进行排序。下面是 qsort 函数的详细介绍。 一、qsort 函数的基本用法 qsort 函数的原型是 `void qsort(void *base, size_t nmemb, size_t size, int (*...
在上面的代码中,我们首先定义了一个 int 类型的数组 num,然后定义了一个比较函数 cmp,该函数用于比较两个 int 类型的元素 finally,我们使用 qsort 函数对 num 数组进行排序。 二、对 char 类型数组排序 qsort ...
### qsort/快速排序C/C++实现 #### 知识点概述 本篇文章将详细介绍一个用C语言编写的快速排序算法实现。快速排序是一种高效的排序算法,在平均情况下具有O(n log n)的时间复杂度,因此在实际应用中非常广泛。本...
使用qsort函数来对结构体数组进行快速排序,提高效率和简化代码。 使用atoi函数来将字符串形式的生日转换为整数形式,便于比较和计算年龄。 使用结构体数组来存储通讯录的信息,方便进行排序和输出。 使用qsort函数...
`qsort`函数是C语言标准库中用于通用数组排序的一个强大工具,它使用快速排序算法,提供了高度灵活的排序机制。`qsort`的原型在`<stdlib.h>`头文件中定义,其通用性使得它可以处理任何类型的数据,只要用户能够提供...
快速排序库函数qsort的调用细则 快速排序库函数qsort是C标准库中的一种排序算法,用于对数组进行排序。qsort函数包含在头文件中,需要在函数头部加上#...接着,使用qsort函数对数组进行排序,最后将排序结果输出。
在C语言中,`qsort`函数是标准库`stdlib.h`中提供的一种通用排序接口,用于实现快速排序或者其他类型的排序。 `qsort`函数的原型如下: ```c void qsort(void *base, size_t nel, size_t width, int (*compar)...
在使用`qsort`时,需要提供四个参数:要排序的数组、数组元素个数、单个元素的大小以及一个比较函数。比较函数用于定义排序的标准,它接受两个void指针作为参数,并返回一个整数值,表示第一个参数应该在第二个之前...
在本篇文章中,我们将深入探讨一个关于快速排序算法的具体实现——通过模板函数的形式来完成排序任务。快速排序是一种高效的排序算法,在实际应用中被广泛采用。该算法的主要优点在于其速度较快,平均时间复杂度为O...
### 快速排序(qsort)总结与应用案例详解 #### 一、引言 快速排序是一种高效的排序算法,由英国计算机科学家托尼·霍尔于1960年提出。它利用分治策略来把一个序列分为较小和较大的两个子序列,然后递归地排序两个子...
它使用了快速排序算法作为其内部实现,因此被称为“快速排序”或简称“快排”。本文将详细介绍`qsort`函数的工作原理及其在C语言中的实现方式。 #### 二、`qsort`函数简介 `qsort`函数的基本调用格式如下: ```c ...
- **功能**:这是快速排序的核心函数,负责将数组分割成两部分,左边的元素都小于或等于枢轴(pivot),右边的元素都大于枢轴。 - **实现**:首先选择一个元素作为枢轴(本例中选择第一个元素),然后遍历数组,移动...
这意味着 qsort 函数的排序速度非常快,即使对非常大的数组也可以快速排序。 结论 sort 函数是 C 语言中的一种常用的排序函数,可以对数组进行排序。通过定义比较函数,可以对不同的数据类型进行排序。本文介绍了...
在使用qsort函数时,需要提供三个参数:数组的首地址、数组元素的个数、每个元素的大小、比较函数的地址。比较函数是qsort函数的核心,它决定了排序的规则。 在本文中,我们使用了三个不同的比较函数:compare、...
根据给定文件的信息,我们可以总结出以下关于“数据结构 快速排序 输出每一趟结果”的知识点: ...通过以上内容,我们可以全面了解如何使用C语言实现快速排序,并且能够理解输出每一趟排序结果的重要性及其应用场景。
`qsort` 是一个在 C 语言标准库 `<stdlib.h>` 中定义的函数,用于对数组进行快速排序。它是一个非常强大的工具,可以用来对多种数据类型进行排序,包括基本数据类型如 `int`, `char`, `double` 以及复杂数据类型如...
`qsort` 实现了快速排序算法,这是一种高效的比较排序算法,平均时间复杂度为O(n log n)。下面我们将详细介绍`qsort`函数的使用及其原理。 `qsort`函数原型如下: ```c void qsort(void *base, size_t num, size_t...
结合提供的文件"qsort函数的使用.doc"和"C函数qsort的简介和用法_新手入门.ppt",你可以深入学习`qsort`的具体使用示例,以及如何编写`compar`函数,以便在实践中更好地运用快速排序算法。这两个文件会提供更多的...