c中没有自带的sort函数emm

不过有自带的qsort函数

(其实用法都差不多(只是我经常以为c中有sort

头文件要用

#include <stdlib.h>

一定要重新把指针指向的值赋值给一个node类型,不然比较不了

 struct node{
int d,id,tmp;
}a[N]; int cmp(const void *x,const void *y){
struct node xx = *(struct node*)x;
struct node yy = *(struct node*)y;
return xx.d-yy.d;
} qsort(a+,n,sizeof(a[]),cmp);//调用 排序a[1]~a[1+n]

这里贴一个代码,实现的功能是给定一个数组(数组中每个数不一样),然后输入一些数,问你这些数在数组中的位置(从0开始编号)

(其实是我看错题的产物(写都写了(就是实现一下离散化而已,当个小例子看吧

 #include <stdio.h>
#include <string.h>
#include <stdlib.h> #define N 2*100010 struct node{
int d,id,tmp;
}a[N];
int b[N],q[N],ans[N]; int cmp(const void *x,const void *y){
struct node xx = *(struct node*)x;
struct node yy = *(struct node*)y;
return xx.d-yy.d;
} int main()
{
//freopen("a.in","r",stdin);
int n,m;
scanf("%d",&n);
for(int i=;i<=n;i++)
{
scanf("%d",&a[i].d);
a[i].id=i;
a[i].tmp=;
}
scanf("%d",&m);
for(int i=;i<=m;i++)
{
scanf("%d",&q[i]);
a[n+i].d=q[i];
a[n+i].id=i;
a[n+i].tmp=;
}
qsort(a+,n+m,sizeof(a[]),cmp);
int now=,p=;
for(int i=;i<=n+m;i++)
{
if(i== || a[i].d!=p) now++;
p=a[i].d;a[i].d=now;
if(a[i].tmp==) b[now]=a[i].id;
}
for(int i=;i<=n+m;i++)
{
if(a[i].tmp==) ans[a[i].id]=b[a[i].d];
}
for(int i=;i<=m;i++)
printf("%d\n",ans[i]-);
return ;
}

还写了一个纯排序的代码,非结构体的。手写快排,或者用系统自带qsort

 #include<stdio.h>
#include<string.h>
#include<stdlib.h> int n,a[];
void quicksort(int a[],int l,int r)
{
int i=l,j=r,key=a[l];
if(l>=r)return;
while(i!=j)
{
while(i<j && a[j]>=key) j--;
a[i]=a[j];
while(i<j && a[i]<=key) i++;
a[j]=a[i];
}
a[i]=key;
quicksort(a,l,i-);
quicksort(a,i+,r);
} int cmp(const void *x,const void *y){
// int xx=*(int *)x;
// int yy=*(int *)y;
// return xx-yy;
return *(int *)x-*(int *)y;
} int main()
{
// freopen("a.in","r",stdin);
// freopen("a.out","w",stdout);
scanf("%d",&n);
for(int i=;i<=n;i++) scanf("%d",&a[i]);
// quicksort(a,1,n);
qsort(a+,n,sizeof(a[]),cmp);
for(int i=;i<=n;i++) printf("%d%c",a[i],(i==n) ? '\n':' ');
return ;
}

c语言中使用自带的qsort(结构体排序)+ 快排的更多相关文章

  1. C语言中两个相同类型的结构体变量之间是可以相互直接赋值的

    C语言中,在相同类型的变量间赋值时是直接内存复制的,即将他们的内存进行复制,而两个同类型的结构体变量属于同一种变量,所以赋值时是按照他们的内存分布来直接拷贝的.所以,在C语言中两个相同类型的结构体变量 ...

  2. go语言的排序、结构体排序

    原文:https://studygolang.com/articles/1598 晚上准备动手写点 go 的程序的时候,想起 go 如何排序的问题.排序 sort 是个基本的操作,当然搜索 searc ...

  3. 全国计算机等级考试二级教程-C语言程序设计_第14章_结构体、共用体和用户定义类型

    函数的返回值是结构体类型 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> struct ...

  4. 转载 从最简单的vector中sort用法到自定义比较函数comp后对结构体排序的sort算法

    转载自:http://www.cnblogs.com/cj695/p/3863142.html sort函数在使用中非常好用,也非常简单,而且效率与冒泡或者选择排序不是一个数量级.本文就sort函数在 ...

  5. 【转】 从最简单的vector中sort用法到自定义比较函数comp后对结构体排序的sort算法

    sort函数在使用中非常好用,也非常简单,而且效率与冒泡或者选择排序不是一个数量级.本文就sort函数在vector中的用法分为sort函数入门用法与自定义comp比较函数比较结构体这两个最基本的功能 ...

  6. 从最简单的vector中sort用法到自定义比较函数comp后对结构体排序的sort算法

    sort函数在使用中非常好用,也非常简单,而且效率与冒泡或者选择排序不是一个数量级.本文就sort函数在vector中的用法分为sort函数入门用法与自定义comp比较函数比较结构体这两个最基本的功能 ...

  7. 【C++】从最简单的vector中sort用法到自定义比较函数comp后对结构体排序的sort算法

    sort函数在使用中非常好用,也非常简单,而且效率与冒泡或者选择排序不是一个数量级.本文就sort函数在vector中的用法分为sort函数入门用法与自定义comp比较函数比较结构体这两个最基本的功能 ...

  8. qsort 与sort 对结构体排序实例

    qsort 与sort 对结构体排序实例 #include<bits/stdc++.h> using namespace std; typedef struct { string book ...

  9. C++中的空类与空结构体大小

    今天面试遇到了一个很有意思的问题,即空结构体在C++中所占的内存大小是多少?参见如下代码: #include <iostream> struct S0 { }; int main() { ...

随机推荐

  1. JNDI和JDBC

    没有JNDI的做法:程序员开发时,知道要开发访问MySQL数据库的应用,于是将一个对 MySQL JDBC 驱动程序类的引用进行了编码,并通过使用适当的 JDBC URL 连接到数据库.就像以下代码这 ...

  2. Winform程序在XP系统上双击运行无反应解决方法

    右键程序,打开属性栏,在兼容性选项里以兼容模式运行该程序即可解决.

  3. css实现 显示一行文字,超出用...代替

    overflow:hidden; white-space:nowrap; text-overflow:ellipsis;

  4. 【bzoj2669】[cqoi2012]局部极小值 容斥原理+状压dp

    题目描述 有一个n行m列的整数矩阵,其中1到nm之间的每个整数恰好出现一次.如果一个格子比所有相邻格子(相邻是指有公共边或公共顶点)都小,我们说这个格子是局部极小值. 给出所有局部极小值的位置,你的任 ...

  5. Android 分Dex (MultiDex)

    需要分Dex的理由想必大家都知道了.正是在ART以前的Android系统中,Dex文件对于方法索引是用一个short类型的数据来存放的.而short的最大值是65535,因此当项目足够大包含方法数目足 ...

  6. Unity3D for VR 学习(1): 又一个新玩具 暴风魔镜 4(Android)

    2016年伊始,有了VR虚拟现实硬件设备:  暴风魔镜4–好奇者的新玩具 . 2015年下半年的朋友圈中各种VR.AR的新闻层次不穷,搞的我也心痒痒的:好歹咱也是职业的Unity3D程序员,高大上的O ...

  7. Insert Node in Sorted Linked List

    Insert a node in a sorted linked list. Have you met this question in a real interview?  Yes Example ...

  8. BZOJ1367 [Baltic2004]sequence 【左偏树】

    题目链接 BZOJ1367 题解 又是一道神题,, 我们考虑一些简单的情况: 我们先假设\(b_i\)单调不降,而不是递增 对于递增序列\(\{a_i\}\),显然答案\(\{b_i\}\)满足\(b ...

  9. NOIP2015运输计划题解报告

    这题在洛谷上可以找到提交 P2680运输计划 题目背景 公元 2044 年,人类进入了宇宙纪元. 题目描述 L 国有 n 个星球,还有 n-1 条双向航道,每条航道建立在两个星球之间,这 n-1 条航 ...

  10. js new date()说明

    javaScript UTC() 方法: UTC() 方法可根据世界时返回 1970 年 1 月 1 日 到指定日期的毫秒数. 要创建一个一个日期对象,可以使用以下的方式: var now=new D ...