C库函数qsort七种使用方法示例
這篇文章是? 一樓那個學長寫的?
?
?
?
C庫函數(shù)qsort七種使用方法示例
七種qsort排序方法<本文中排序都是采用的從小到大排序>
一、對int類型數(shù)組排序
C++代碼
Sample:
二、對char類型數(shù)組排序(同int類型)
C++代碼
Sample:
三、對double類型數(shù)組排序(特別要注意)
C++代碼
四、對結(jié)構(gòu)體一級排序
C++代碼
五、對結(jié)構(gòu)體二級排序
C++代碼
六、對字符串進行排序
C++代碼
七、計算幾何中求凸包的cmp
C++代碼
PS: 其中的qsort函數(shù)包含在的頭文件里,strcmp包含在的頭文件里
?
大家自己先做下,不要搜代碼
?
NYOJ? 7(街區(qū)最短路經(jīng))
?
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int x[101],y[101];
int x2[101],y2[101];
int cmp(const void*a,const void*b)
{
??? return *(int *)a-*(int *)b;
}
int main()
{
??? int N;
??? while(scanf("%d",&N)!=EOF)
??? {
??????? while(N--)
??????? {
??????????? int i,n,sum=0;
??????????? scanf("%d",&n);
??????????? for(i=0;i<n;i++)
??????????? {
??????????????? scanf("%d %d",&x[i],&y[i]);
???????????? ???x2[i]=x[i];
??????????????? y2[i]=y[i];
??????????? }
??????????? qsort(x2,n,sizeof(x2[0]),cmp);
??????????? qsort(y2,n,sizeof(y2[0]),cmp);
??????????? for(i=0;i<n;i++)
??????????? {
??????????????? if((x2[n/2]==x[i])&&(y2[n/2]==y[i]))
??????????????? {
??????????????????? continue;
??????????????? }
??????????????? sum+=abs(x[i]-x2[n/2])+abs(y[i]-y2[n/2]);
??????????? }
??????????? printf("%d\n",sum);
??????? }
??? }
??? return 0;
}
?
?
NYOJ 540(奇怪的排序)?????? 來自第五屆省賽,簡單題
#include<stdio.h>
#include<stdlib.h>
typedef struct Node
{
??? int mmm;//? 數(shù)本身
??? int mm;//?? 反序后的數(shù)
?
}Node;
Node node[55];
int cmp(const void *a,const void *b)
{
??? Node *c = (Node *)a;
??? Node *d = (Node *)b;
???
??? return c->mm - d->mm;
}
int main()
{
??? int N,m,n,i,x,k;
??? scanf("%d",&N);
??? while(N--)
??? {
??????? x=0;
??????? scanf("%d %d",&m,&n);
??????? for(i=m;i<=n;i++)
??????? {
??????????? x++;
??????????? k=i;
??????????? node[x].mmm=i;
??????????? node[x].mm=0;
??????????? while(k)
??????????? {
?????????????? node[x].mm=node[x].mm*10+k%10;
?????????????? k=k/10;
??????????? }
??????? }
??? ????qsort(node+1,n-m+1,sizeof(node[1]),cmp);
??????? printf("%d",node[1].mmm);
??????? for(i=2;i<=n-m+1;i++)??????? {
??????????? printf(" %d",node[i].mmm);
??????? }
???????? printf("\n");
??? }
??? return 0;
}
?
?
import java.util.Arrays;
import java.util.Scanner;
?
public class NYOJ540 {
?
??? public static void main(String[] args) {
?????? int from, to, T;
?????? Node node[];
?????? Scanner sc = new Scanner(System.in);
?????? T = sc.nextInt();
?????? int temp;
?????? while(T-->0) {
?????????? from = sc.nextInt();
?????????? to = sc.nextInt();
?????????? node = new Node[to-from+1];
?????????? int j = 0;
?????????? for(int i=0; i<node.length; i++) {
????????????? //q已經(jīng)初始化為0了
????????????? node[i] = new Node();
?????????? }
?????????? for(int i=from; i<=to; i++) {
????????????? node[j].p = i;
????????????? temp = i;
????????????? while(temp>0) {
????????????????? /*
????????????????? ?* 必須在大while循環(huán)構(gòu)造node數(shù)組
????????????????? ?* 否則就第一組數(shù)據(jù)正確
????????????????? ?* 因為下面這一句用到了以前的q值
????????????????? ?*/
????????????????? node[j].q = node[j].q*10 + temp%10;
????????????????? temp /= 10;
????????????? }
????????????? j++;
?????????? }
?????????? /*
?????????? ?* 只看API函數(shù),第三個參數(shù)是toIndex,以為是下標
?????????? ?* 誰知道具體一看不包括,wa了n次
?????????? ?*/
?????????? Arrays.sort(node,0,to-from+1);
?????????? System.out.print(node[0].p);
?????????? for(int i=1; i<to-from; i++) {
????????????? System.out.print(" "+node[i].p);
?????????? }
?????????? System.out.println(" "+node[to-from].p);
?????? }
??? }
}
?
class Node implements Comparable<Node>{
??? int p;
??? int q;
???
??? public Node() {
?????? this.p = 0;
?????? this.q = 0;
??? }
?
??? @Override
??? public int compareTo(Node o) {
?????? // TODO Auto-generated method stub
?????? Node other = o;
?????? return this.q - other.q;
??? }
???
???
}
轉(zhuǎn)載于:https://www.cnblogs.com/hpuzyf/p/3237730.html
總結(jié)
以上是生活随笔為你收集整理的C库函数qsort七种使用方法示例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 反转排序
- 下一篇: 今天是我开通博客的第一天