使用qsort函数快速排序数组

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函数

你可能感兴趣的:(C++,c,C#)