在遗传算法中出现等式约束_排序算法中的稳定性-等式的处理
在遗传算法中出现等式约束
by Onel Harrison
通过Onel Harrison
排序算法中的稳定性-等式的处理 (Stability in Sorting Algorithms — A Treatment of Equality)
Algorithms are at the heart of computer science. Algorithms used for sorting are some of the most fundamental, useful, and consequently, ubiquitous.
算法是计算机科学的核心。 用于排序的算法是一些最基本,最有用且因此无所不在的算法。
Algorithm — a finite set of unambiguous steps for solving a specific problem.
算法-解决特定问题的有限的明确步骤集。
We constantly and often unconsciously sort and rely on the order of grouped objects. For instance, we rank tasks on a list according to priority. We stack books on shelves by their height. We sort rows in a spreadsheet or database, or rely on the alphabetical order of words in a dictionary. Sometimes, we even perceive a certain kind of beauty in ordered arrangements.
我们经常不知不觉地对分组对象的顺序进行排序和依赖。 例如,我们根据优先级在列表上对任务进行排名。 我们按书架的高度将书堆起来。 我们对电子表格或数据库中的行进行排序,或者依赖字典中单词的字母顺序。 有时,我们甚至有秩序地安排一种美感。
As programmers, knowing how we sort is important because it affects what a sorted arrangement might look like. Not all sorts order objects in the same way! Because of this, the results of sorting operations differ based on the algorithms used. If this goes unacknowledged, we might surprise ourselves or the people who use our software.
作为程序员,知道我们是如何排序是非常重要的,因为它影响的有序排列可能是什么样子。 并非所有对象都以相同的方式排序! 因此,根据所使用的算法,排序操作的结果会有所不同。 如果不了解这一点,我们可能会让自己或使用我们软件的人员感到惊讶。
The stability of sorting algorithms is one of the distinguishing properties among them. It deals with how the algorithm treats comparable items with equal sort keys.
排序算法的稳定性是它们之间的区别属性之一。 它处理算法如何使用相等的排序键来处理可比较的项目。
Sort key — A key used to determine the ordering of items in a collection, e.g. age, height, position in the alphabet, etc.
排序键-用于确定集合中项目顺序的键,例如年龄,身高,字母位置等。
A stable sorting algorithm maintains the relative order of the items with equal sort keys. An unstable sorting algorithm does not. In other words, when a collection is sorted with a stable sorting algorithm, items with the same sort keys preserve their order after the collection is sorted.
稳定的排序算法使用相同的排序关键字维护项目的相对顺序。 不稳定的排序算法则不会。 换句话说,当使用稳定的排序算法对集合进行排序时,具有相同排序键的项目将在对集合进行排序后保留其顺序。
示例,代码和演示 (An Example, Code, and a Demo)
The image above illustrates the effect of a stable sort. On the left, the data was sorted alphabetically by Name. After sorting the data by Grade, you can see that the alphabetical order of the names was maintained for each row with the same Grade.
上图显示了稳定排序的效果。 在左侧,数据按名称按字母顺序排序。 在按等级对数据进行排序之后,您可以看到为具有相同等级的每一行维护了名称的字母顺序。
With an unstable sort, there is no guarantee the alphabetical ordering is maintained as shown in the image above.
对于不稳定的排序,不能保证如上图所示保持字母顺序。
您并不总是需要稳定的排序 (You don’t always need a stable sort)
Knowing whether or not the sort you use is stable is particularly important. Especially in situations when your data already has some order to it that you would like to maintain when you sort it by another sort key. For example, you have rows in a spreadsheet containing student data that is, by default, sorted by name. You would like also to sort it by grades while maintaining the sorted order of the names.
知道您使用的排序是否稳定尤其重要。 尤其是在您的数据已经具有某种顺序的情况下,当您使用另一个排序键对数据进行排序时,尤其要注意这种情况。 例如,您在电子表格中有一些行,其中包含默认情况下按名称排序的学生数据。 您还希望按等级对它进行排序,同时保持名称的排序顺序。
On the other hand, the stability of the sort doesn’t matter when the sort keys of the objects in a collection are the objects themselves — an array of integers or strings, for example — because we can’t tell the difference among the duplicated keys.
另一方面,当集合中对象的排序键是对象本身(例如整数或字符串数组)时,排序的稳定性并不重要,因为我们无法区分重复项之间的区别键。
// JavaScript
// $5 bucks if you can correctly tell which 4 in the sorted// array was the first 4 when the array was unsorted.
var numbers = [5, 4, 3, 4, 9];numbers.sort(); // [3, 4, 4, 5, 9]
// A one second trip around the world, courtesy of the Flash, to// whomever correctly tells me which 'harry' in the sorted array was// the second 'harry' in the unsorted array.
var names = ['harry', 'barry', 'harry', 'cisco'];names.sort(); // ['barry', 'cisco', 'harry', 'harry']
杂物无所不在-了解您的杂物 (Sorts are everywhere — know your sorts)
It’s quite easy to find out if the default sort in your programming language or library is stable. The documentation should include this information. For instance, default sorting is stable in Python, unstable in Ruby, and undefined? in JavaScript (it depends on the browser’s implementation).
找出编程语言或库中的默认排序是否稳定是很容易的。 该文档应包含此信息。 例如, 默认排序在Python中是稳定的 , 在Ruby中 是 不稳定的 ,并且未定义 ? JavaScript (取决于浏览器的实现)。
Here are a few common sorting algorithms and their stability:
以下是一些常见的排序算法及其稳定性:
- Insertion Sort — Stable插入排序-稳定
- Selection Sort — Unstable选择排序-不稳定
- Bubble Sort — Stable气泡排序-稳定
- Merge Sort — Stable合并排序-稳定
- Shell Sort — Unstable外壳排序-不稳定
- Timsort — StableTimsort —稳定
See Wikipedia for a more exhaustive list.
有关更详尽的列表,请参见Wikipedia 。
现在是演示时间? (It’s demo time ??)
This demo shows the effect of using a stable (insertion sort) and unstable sorting (selection sort) algorithm to sort a small table of data. I had a bit of fun and practically reverse engineered React while building this. Have a look at the source.
该演示演示了使用稳定(插入排序)和不稳定排序(选择排序)算法对小的数据表进行排序的效果。 在构建此代码时,我有一些乐趣,并且实际上是反向工程的React。 看一下来源 。
下一步是什么? (What’s next?)
If you are thirsty for more knowledge about the stability of other sorting algorithms, Wikipedia has a good comparison table and additional information on well known sorting algorithms.
如果您想了解有关其他排序算法稳定性的更多知识,那么Wikipedia可以提供一个很好的比较表以及有关众所周知的排序算法的其他信息。
Until next time, peace.
直到下一次,和平。
学习了新知识还是喜欢阅读本文? 拍打它,分享它,以便其他人也可以阅读,然后继续阅读。 也可以发表评论。 (Learned something new or enjoyed reading this article? Clap it up ?, share it so that others can read too, and follow along for more. Feel free to leave a comment too.)
翻译自: https://www.freecodecamp.org/news/stability-in-sorting-algorithms-a-treatment-of-equality-fa3140a5a539/
在遗传算法中出现等式约束
相关文章:

vconsole 调试 查看LOG VUE在手机上调试 手机查看h5的日志
简单介绍下vConsole: vConsole是一个由微信公众平台前端团队研发的web前端开发者面板,可用于展示console日志,方便开发、调试。 使用场景1,在vue-cli 构建的项目中使用: 通过npm安装和使用: npm install vconsole -…

无参数的lambda匿名函数
lambda 语法: lambda [arg1[,arg2,arg3....argN]]:expression 1.单个参数的: g lambda x:x*2 print g(3) 结果是6 2.多个参数的: m lambda x,y,z: (x-y)*z print m(3,1,2) 结果是4 3.无参数 # 使用def定义函数的方法 def true():return Tru…

scrum项目管理_Scrum,用于初创企业(或针对该项目的任何项目)
scrum项目管理Scrum is a lightweight framework designed to help small, close-knit teams of people develop complex products.Scrum是一个轻量级框架,旨在帮助紧密联系的小型团队开发复杂的产品。 Of course, Scrum isn’t just applicable to software proje…

升级Jekyll 3.0
每一次的升级都得又一次折腾一次,jekyll也不例外 从jekyll 2.5.2 升级为jekyll 3.0.1 错误一: jekyll 3.0.1 | Error: Permission denied - bind(2) for 127.0.0.1:4000 端口被占有,打开_config.yml 在最后加上一行 port: 5001 (其它也可)问题解决 错误…

jquery学习(3)--高级选择器
自己手写的学习笔记。常规选择器: /****************学习--高级选择器(1)****************/---高级选择器:ie7层次选择器:后代选择器 ul li a $(ul li a) 获取追溯到的多个dom对象 ie6子选择器 …

h5 返回上一页并且刷新页面
window.history.go(-1) 和 window.history.back(-1) 都用了,安卓会刷新,IOS系统不刷新(IOS会读取浏览器缓存) 下面用了一种比较low的方法,但是好歹实现了。。 //home.html localStorage.setItem(homeHref,window.loc…

kotlin中的异常处理_如何使用assertFailsWith在Kotlin中测试异常
kotlin中的异常处理by Daniel Newton丹尼尔牛顿 如何使用assertFailsWith在Kotlin中测试异常 (How to test exceptions in Kotlin with assertFailsWith) I wanted to write this short post to highlight the assertFailsWith function available to Kotlin. This function m…

学习dubbo框架的问题
InputStream : 是所有字节输入流的超类,一般使用它的子类:FileInputStream等,它能输出字节流;InputStreamReader : 是字节流与字符流之间的桥梁,能将字节流输出为字符流,并且能为字节…

Android 控件 之 Menu 菜单
http://www.cnblogs.com/Mrs-cc/archive/2012/07/21/2603042.html 1.OptionsMenu (选项菜单)用法总结使用方法:方法一:添加菜单项:onCreateOptionsMenu(Menu menu)中添加menu.add(Menu.NONE,Men…

VUE保存页面的数据,VUE页面显示就执行某个函数,VUE页面隐藏就执行某个函数
用 VUE 默认的 keep-alive 组件实现 保存页面的数据,页面显示就执行某个函数,页面隐藏就执行某个函数实现方式: 1.在路由内设置页面是否需要缓存; 示例代码:(在需要的组件里面添加meta 对象,keepAlive属…

npm i和npm_让您的NPM套件包含Jest和Codecov☂️
npm i和npmby Carl-Johan Kihl卡尔约翰基尔(Carl-Johan Kihl) 让您的NPM套件包含Jest和Codecov☂️ (Get your NPM-package covered with Jest and Codecov ☂️) 介绍 (Introduction) Let’s talk about code coverage, and how you can do coverage reports in Jest and Cod…

分页传页数的方法
<!DOCTYPE html><html> <head> <meta charset"UTF-8"> <title></title> </head> <body> <div> <span id"num">1</span> <button id"prev">上一页</button> <…

VUE input唤起键盘 底部固定的标签被顶上去解决办法
通过输入框的失去焦点事件和点击事件,当出现键盘时把绝对定位的底部文字隐藏,失去焦点(键盘隐藏的时候)显示底部文字 解决代码 <input type"text" class"weui-input" click"input_click" blur…

unity中摄像机的控制---调整摄像机,不让他摔倒
摄像机大部分人都会控制,最明显的就是让他旋转,随着鼠标的左右上下移动而旋转,但是总是会遇到一个问题,就是转着转着就仿佛他自己摔倒了似的,其实就是它本身绕着Z轴旋转了 这样就不是我们想要的结果了 要想解决也简单&…

java正则表达式课程_通过此免费课程学习正则表达式
java正则表达式课程by Beau Carnes通过博卡恩斯 通过此免费课程学习正则表达式 (Learn Regular Expressions with this free course) “Some people, when confronted with a problem, think ‘I know, I’ll use regular expressions.’ Now they have two problems.” -Jami…

Codeforces Round #370 (Div. 2)
A - Memory and Crow 这题我没看题意,看了样例猜了一下就AC了,题目好像还挺复杂的。 #include<bits/stdc.h> using namespace std; int a[100005]; int main() {int n;cin>>n;for(int i1;i<n;i) scanf("%d",&a[i]);for(int…

pat1004. Counting Leaves (30)
1004. Counting Leaves (30) 时间限制400 ms内存限制65536 kB代码长度限制16000 B判题程序Standard作者CHEN, YueA family hierarchy is usually presented by a pedigree tree. Your job is to count those family members who have no child. Input Each input file contains…

css 引用字体
最近遇到个问题,页面使用的字体要用PingFangSC字体,引入方法如下: 简单介绍下PingFangSC字体: (1)苹方-简 常规体 font-family: PingFangSC-Regular, sans-serif; (2)苹方…

系统技术方案 系统构架_构架系统时应注意的事项
系统技术方案 系统构架by Ayelet Sachto通过Ayelet Sachto 架构系统时要记住的6件事 (6 Things to keep in mind when architecting a system) Architecture may sound like a “scary ” or overwhelming subject, but actually, applying logic and approaching the problem…

[LeetCode] Add Digits
Given a non-negative integer num, repeatedly add all its digits until the result has only one digit. For example: Given num 38, the process is like: 3 8 11, 1 1 2. Since 2 has only one digit, return it. 分析一:最简单的循环方法 class Solutio…

vue 点击事件执行多次
把 click 改成 click.once 就可以了 示例代码 click.once"down" 这样有一个弊端,就是事件只执行一次就不再执行了, 另一种方式,做一个定时器 //默认设置dddown为 true if(that.dddown){that.dddown falsesetTimeout(function(…

如何以及为什么使用Android Visibility Listeners
The Android UI is built up from Views, and in a regular application, there are usually several of them. To find out which View the user is currently looking at, you need to install Visibility Listeners.Android UI是从Views构建的,在常规应用程序中&…

在vue中使用Element-UI
Element-UI是一套基于Vue2.0的UI组件库,http://element.eleme.io/#/zh-CN/component/carousel 首先npm install element-ui --save 然后在main.js中引入: import Vue from vue import ElementUI from element-ui import element-ui/lib/theme-default/in…
Flex布局教程(来源:阮一峰)
网页布局(layout)是 CSS 的一个重点应用。Flex 布局将成为未来布局的首选方案。本文介绍它的语法,下一篇文章给出常见布局的 Flex 写法。网友 JailBreak 为本文的所有示例制作了 Demo,也可以参考。 以下内容主要参考了下面两篇文…

ibatis的there is no statement named xxx in this SqlMap
报错情况如下:com.ibatis.sqlmap.client.SqlMapException: There is no statement named Control.insert-control in this SqlMap. at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.getMappedStatement(SqlMapExecutorDelegate.java:231)at com.ibatis.sq…

javascript案例_如何在JavaScript中使用增强现实-一个案例研究
javascript案例by Apurav Chauhan通过Apurav Chauhan 如何在JavaScript中使用增强现实-一个案例研究 (How to use Augmented Reality with JavaScript — a case study) In this experiment, I talk about how Augmented Reality with JS can be used to make learning more f…

久未更 ~ 一之 —— 关于ToolBar
很久没更博客了,索性开一个久未更 系列 > > > > > 久未更 系列一:关于ToolBar的使用(后续补充) 1 //让 ToolBar 单独使用深色主题 使得 toolbar 中元素 变为淡色 2 android:theme"style/ThemeOverlay.AppCompat.Dark.ActionBar"…
SQLServer怎样把本地数据导入到远程服务器上(转载)
平常用到mssql时间比较少,总是过一段时间就忘记应该怎么操作了。当要做mssq把本地数据导入到远程服务器的时候,就去网上搜索很久都没有图解的,所以今天自己收集一下免得下次又到处去找。希望对自己,同时对其它需要的人都有一定的帮…

input 默认样式的修改
/* 修改input选中的默认边框样式 */ outline: none; /* 修改input的选中时的光标颜色 */ caret-color:red; /* 修改input的选中时的默认边框 */ border: none; /* 修改input的提示文字的默认样式 */ input::-webkit-input-placeholder{color:#d0d0d0;}

巨石加密_点餐:如何吃一个可怕的巨石
巨石加密by Alan Ridlehoover通过艾伦里德尔霍弗 点餐:如何吃一个可怕的巨石 (Ordering Take Out: How to Eat a Scary Monolith) Martin Fowler said:马丁福勒(Martin Fowler) 说 : Almost all the successful microservice stories have started wit…