冒泡算法应用(坐标Y值降序X值升序)
今天有个客户需求是有一坐标数组,希望按Y值降序X值升序排列,我临时写了个算法。
先写个坐标类:
class XYZ
{
public XYZ() { }
public XYZ(double x, double y)
{
_X = x;
_Y = y;
}
double _X, _Y;
public double X
{
set { _X = value; }
get { return _X; }
}
public double Y
{
set { _Y = value; }
get { return _Y; }
}
}
冒泡排序:
XYZ xyz0 = new XYZ(4, 5);
XYZ xyz1 = new XYZ(3, 2);
XYZ xyz2 = new XYZ(2, 1);
XYZ xyz3 = new XYZ(2, 2);
//
XYZ[] arrXYZ = new XYZ[] { xyz0, xyz1, xyz2, xyz3 };
XYZ xyzTmp = new XYZ();
for (int i = 0; i < arrXYZ.Length; i++)
{
for (int j = 0; j < arrXYZ.Length - 1 - i; j++)
{
if (arrXYZ[j].Y < arrXYZ[j + 1].Y)//按Y值降序排列
{
xyzTmp = arrXYZ[j];
arrXYZ[j] = arrXYZ[j + 1];
arrXYZ[j + 1] = xyzTmp;
}
}
}
//在以Y值分组
List<double> listDb = new List<double>();
for (int i = 0; i < arrXYZ.Length; i++)
{
if (!listDb.Contains(arrXYZ[i].Y))
listDb.Add(arrXYZ[i].Y);
}
//再以X值升序排列
for (int k = 0; k < listDb.Count; k++)
{
for (int i = 0; i < arrXYZ.Length; i++)
{
for (int j = 0; j < arrXYZ.Length - 1 - i; j++)
{
if (arrXYZ[j].Y != listDb[k] || arrXYZ[j + 1].Y != listDb[k]) continue;
//这里要找出Y值相同的。
if (arrXYZ[j].X > arrXYZ[j + 1].X)
{
xyzTmp = arrXYZ[j];
arrXYZ[j] = arrXYZ[j + 1];
arrXYZ[j + 1] = xyzTmp;
}
}
}
} for (int i = 0; i < arrXYZ.Length; i++)
{
MessageBox.Show(arrXYZ[i].X + "," + arrXYZ[i].Y);
}
用Linq简练多了:
private List<XYZ> sortYandX(List<XYZ> listXy)
{
var query = from element in listXy
orderby element.Y descending, element.X ascending
select element;
return new List<XYZ>(query);
}
List<XYZ> listXYZ = new List<XYZ>();
listXYZ.Add(xyz0);
listXYZ.Add(xyz1);
listXYZ.Add(xyz2);
listXYZ.Add(xyz3);
foreach (XYZ xyz in sortYandX(listXYZ))
{
MessageBox.Show(xyz.X + "," + xyz.Y);
}
临时时想了下,对算法之类很陌生,敬请高手指教。
冒泡算法应用(坐标Y值降序X值升序)的更多相关文章
- 每天一道算法题(14)——N个降序数组,找到最大的K个数
题目: 假定有20个有序数组,每个数组有500个数字,降序排列,数字类型32位uint数值,现在需要取出这10000个数字中最大的500个. 思路 (1).建立大顶堆,维度为数组的个数,这里为20( ...
- JAVA里List集合中的对象根据对象的某个属性值降序或者升序排序
需要使用JDK1.8及以上 package com.stream; import java.util.Comparator; import java.util.List; public class T ...
- Java 将Map按Value值降序排列
1 /** 2 * 将集合按照降序排列-FLOAT 3 * @param nowPartTwoData 4 * @return 5 */ 6 private static List<Map.En ...
- HTML中实现Table表头点击升序/降序排序
题目:如下图,请实现表格信息的排序功能,当点击表头的属性区域,将表格信息进行排序切换功能,即第一次点击为降序排序,再一次点击进行升序排序. 姓名 力量 敏捷 智力 德鲁伊王 17 24 13 月之骑士 ...
- python读取一个英文文件,并记录每个单词出现的次数,降序输出
对文中出现的句号,逗号和感叹号做了相应的处理 sorted排序函数用法: 按照value值降序排列: sorted(dict.items(),key=lambda k:k[1],reverse=Tru ...
- SQL-ORDER BY 多字段排序(升序、降序)
ORDER BY _column1, _column2; /* _column1升序,_column2升序 */ ORDER BY _column1, _column2 DESC; /* _col ...
- mysql_DML_select_升序降序去重
select *from wsb limit 5;显示前5行 select *from students LIMIT (m,n) (其中m是指记录开始的index,从0开始,表示第一条记录n是指 ...
- sql中使一个字段升序,一个字段降序
ORDER BY _column1, _column2; /* _column1升序,_column2升序 */ ORDER BY _column1, _column2 DESC; /* _colum ...
- LINQ中的OrderBy实现按照两个字段升序、降序排序操作
在公司或许有这种需求,先根据第一个某个字段按照升序排序,然后如果相同,在按照第二个某个字降序排序,我们该怎么去实现呢? 现在来教教大家分别使用Labmda和LINQ进行这种操作. 1.先按照第一个字段 ...
随机推荐
- Two-Phase Commit (两阶段提交)
1. 流程 1) Coordinator (协调者) 广播 VOTE-REQ 给所有 Participant (参与者) 2) Coordinator 等待 Participant 的结果 3) Pa ...
- JavaScript parseInt() toString()函数
parseInt(string, radix) string:必需.要被解析的字符串 radix:可选.表示要解析的数字的基数.该值介于 2 ~ 36 之间. 如果省略该参数或其值为 0,则数字将以 ...
- VS2005 “无法在证书存储区中找到清单签名证书”错误的解决方法
方法一:在VS2005中出现该错误时,用记事本打开项目的.csproj文件,删除以下内容即可: <ManifestCertificateThumbprint>B531F2CF2227 ...
- UVAL1277_Cops and Thieves
单源点汇点无向图,要阻隔某个点的流量,必须在一个点上消耗一定的价值,问你能否在消耗价值不超过k的前提下,阻隔源点到汇点的流量. 直接对于有权值的点拆点,拆后边容量即为点权.其余的点的容量无穷,最大流即 ...
- 在指定控件位置弹出popup window
先看效果图 黄色的就是弹出的popup window 首先自定义一个view用来显示,文件名为layout_my_view.xml <?xml version="1.0" e ...
- module中build.gradle文件参数含义
主要是module的build.gradle,截图如下: 01行:apply plugin: 'com.android.application' 表示该module是这个应用程序的module ...
- linux环境变量查看及修改
例如用命令 echo $PATH 则可以查看该环境变量为/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 添加环境定义一个变量 ...
- ubuntu卸载java
Try this command: java -version If 1.6* comes then try: sudo apt-get autoremove openjdk-6-jre If 1.7 ...
- 第91讲:Akka第一个案例动手实战架构设计
我们来看一下Akka的一个简单的wordcount的案例架构设计 从图中我们可以看出,不同的行我们是交给不同的actor进行入理的,每行首先进行map操作,识别出每个单词,然后交给reduce步骤的a ...
- JQuery学习(表单对象属性)---checked
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...