qsort()函数排序实例

版权声明:原创转载请声明 https://blog.csdn.net/qq_39378657/article/details/88040387

qsort函数实例

#分析+代码+测试数据

分析

qsort在c++的algorithm头文件中,注意其参数的使用。比如
// 数在数组num[210]中的范围是闭区间 [0,n-1] 或者[1,n]
//对应的第一个参数num,第二个参数是n。对应的第一个参数是num+1,第二个参数是n+1.
//第三个参数写成sizeof(num[0]),数组每个元素的空间大小。
//第四个参数是自定义cmp函数,可以如下代码中这样写,亦可以

int cmp(int a,int b){
	return a>b;
}

//cmp函数返回正数则升序,返回负数则降序排列。
//如上函数,a>b则返回正数,a<b则返回负数。

代码

//复杂度O(N*logN),在基本有序的情况下效率不高

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;

int cmp ( const void *a , const void *b )
{
    return *(int *)a - *(int *)b;
}

int main(){
    int n,num[210];
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
        scanf("%d",&num[i]);

    qsort(num+1,n,sizeof(num[0]),cmp);
    for(int i=1;i<n;i++)
    printf("%d ",num[i]);
    printf("%d\n",num[n]);
}

测试数据

输入数据
5
8 3 6 4 9

输出数据
3 4 6 8 9

猜你喜欢

转载自blog.csdn.net/qq_39378657/article/details/88040387