二维数组快速排序(sort+qsort)

二维数组快速排序

  qsort是c中快速排序,如果简单的一维数组排序,想必大家的懂。现在看一下二维数组的排序,虽然可以冒泡但是太费时间了,我们这里使用qsort来快速排序,看代码应该看得懂吧。

代码:

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 struct node
 4 {
 5     int x,y;
 6 }a[10005];
 7 int cmp(const void *a,const void *b)    //要转化为结构体类型
 8 {
 9     struct node *c = (node*)a;
10     struct node *d = (node*)b;
11     return c->y - d->y;
12 }
13 int main()
14 {
15     int i,m,n;
16     scanf("%d",&m);
17     while(m--)
18     {
19         scanf("%d",&n);
20         for(i=0; i<n; i++)
21             scanf("%d%d",&a[i].x,&a[i].y);
22         qsort(a,n,sizeof(a[0]),cmp);    //记得是sizeof(a[0])

  sort是c++中的快速排序,不多说,直接上代码:

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<algorithm>
 4 using namespace std;
 5 struct node
 6 {
 7     int x,y;
 8 }a[10005];
 9 bool cmp(node a,node b)
10 {
11     return a.y < b.y;
12 }
13 int main()
14 {
15     int m,n,i,k,ans;
16     scanf("%d",&m);
17     while(m--)
18     {
19         scanf("%d",&n);
20         for(i=0; i<n; i++)
21             scanf("%d%d",&a[i].x,&a[i].y);
22         sort(a,a+n,cmp);

原文地址:https://www.cnblogs.com/-skyblue/p/9575711.html

时间: 2024-10-08 10:27:54

二维数组快速排序(sort+qsort)的相关文章

qsort 函数的使用——对普通数组、指针数组、二维数组中的元素进行排序

在ANSI C中,qsort函数的原型是 #include <stdlib.h> void qsort(void *base, size_t nmemb, size_t size, int (*compar) (const void *, const void *)); 解释:qsort函数对含有nmemb个元素的数组进行排序,而base指针指向数组的第一个元素.这个数组的元素个数由size指定. compar函数对qsort的比较操作进行定义,所以可以定制数字的比较,字符串的比较,甚至结构体

qsort对二维数组的排序

转自 :http://blog.csdn.net/slience_perseverance/article/details/6695048 qsort对二维数组排序与对以为数组排序是一样的几乎没有什么差别,而且后来想想定义一个二维数组所占的空间与定义一个机构体所占的空间是一样 的,所以没有必要用多维数组,直接用结构体数组就行. #include<stdio.h> #include<stdlib.h> #include<string.h> #include<math

二维数组sort排序

和副本任务完全无关的奇怪感慨: 完全搞不懂我为什么会在搞图论的时候学这种奇怪东西,需要的时候不会,不需要的时候又莫名增加了奇怪的技能点. 之前的假期规划在十多天的放飞自我中彻底泡汤,简单的图论都一点不会,sad. 在想要不要把分治 贪心 递推 哈希 大根小根堆再看一遍,我似乎又忘了. 刘神刷题比我快了,我应该好好学习不能这么浪. 大概我永远没有大神们的智商优势吧,所以要更努力. 毕竟没有贯彻意志的希望一无所有,所以努力成为hal一样的绿灯侠吧少年[bushi]. 好了回归正题. 要想知道二维数组

数组属性的习题、Arrays工具、二维数组

一.数组的练习 1.声明一个char类型的数组, 从键盘录入6个字符: [1]遍历输出 [2]排序 [3]把char数组转化成一个逆序的数组. 1 import java.util.Scanner; 2 public class Operation01{ 3 public static void main (String[] args){ 4 char[] zifu = new char[6]; 5 Scanner car = new Scanner(System.in); 6 char tem

二维数组与冒泡排序

记住数组顺序是从0开始的!!! 记住数组顺序是从0开始的!!! 记住数组顺序是从0开始的!!! 重要的事情说三遍! 二维数组的静态位 一,Arrays.sort(lsz),//排序操作针对于整型数据.如果是char型数据或者其他,则按照unicode的编码顺序排序 二,Arrays.copyOf(lsz , 2),//复制操作可以复制全部或者一部分的长度,上式中就是取前两位数组. Arrays.copyOfRange(lsz, from, to)//复制操作,注意力两点,首先这个段位的长度可以大

二维数组里,根据数组字段为条件,进行总体排序(二维排序)

1 <?php 2 /** 3 * 二维数组根据某个字段排序 4 * 功能:按照用户的年龄倒序排序 5 * @author ruxing.li 6 */ 7 header('Content-Type:text/html;Charset=utf-8'); 8 $arrUsers = array( 9 array( 10 'id' => 1, 11 'name' => '张三', 12 'age' => 25, 13 ), 14 array( 15 'id' => 2, 16 '

0728二维数组/集合

二维数组int [,] array = new int[5,3];//有五个一维数组,每一个一维数组有3个元素 /打印出来一个“王”这个字string[,] wang = new string[,]{  {" ","■","■","■","■","■"," "}, {" "," "," ","■&q

二维数组,多维数组,集合。

一.二维数组 int [,] array=new int [m,n];表示建立一个名叫array的int数组,这个数组有m个一维数组,每个一维数组有n个因素. array[m,n]表示索引号是为第m的数组,索引号是n的那个因素. 与for循环的嵌套相呼应,m个数组表示有m次外循环,n个因素表示有n次内循环. 二.多维数组 int [,,] shuzu=new int [4,3,2]; 4:有4个二维数组: 3:每个二位数组里有3个一维数组: 2:每个一维数组里有2个因素. 三.集合 集合只能是一

二维数组,锯齿数组和集合

一.二维数组 二维数组:一维数组----豆角二维数组----表格 定义:1.一维数组:数据类型[] 数组变量名 = new 数据类型[数组长度];数据类型[] 数组变量名 = new 数据类型[数组长度]{1,2,3....}; 2.二维数组:数据类型[,] 数组变量名 = new 数据类型[行数,列数];int[,] a = new int[3,4]; 赋值: a[行下标,列下标] = 值 下标都是从0开始的取值: a[行下标,列下标] 题目:一个班6个人,从键盘输入每个学号语文,数学,外语成