jiyiren / JYSort Licence: other
Android 图形化排序, 六种类排序算法可视化展示
Programming Languages java 68154 projects - #9 most used programming language
Projects that are alternatives of or similar to JYSort js-deep-sort-object Simple module to sort objects recursively by its keys
Stars : ✭ 19 (+26.67%)
Mutual labels: sort
PixelGlitch Image glitch visualization using various Pixel Sorting methods for Processing
Stars : ✭ 25 (+66.67%)
Mutual labels: sort
defense 🔮 A Crystal HTTP handler for throttling, blocking and tracking malicious requests.
Stars : ✭ 51 (+240%)
Mutual labels: handler
HandlerFrame 🐮 HandlerFrame是一个基于观察者模式采用信息分发机制实现跨界面Handler通讯框架,整个项目里面只存在一个Handler实例对象。
Stars : ✭ 42 (+180%)
Mutual labels: handler
yolo deepsort Fast MOT base on yolo+deepsort, support yolo3 and yolo4
Stars : ✭ 47 (+213.33%)
Mutual labels: sort
lua sort Lua pure sort algorithm based on lib_table.c (from LuaJIT 2.1.0)
Stars : ✭ 21 (+40%)
Mutual labels: sort
SortingLab.jl Faster sorting algorithms (sort and sortperm) for Julia
Stars : ✭ 20 (+33.33%)
Mutual labels: sort
Static-Sort A simple C++ header-only library for fastest sorting of small arrays. Generates sorting networks on compile time via templates.
Stars : ✭ 30 (+100%)
Mutual labels: sort
BasicExercises 📘 Personal basic practice test playground.
Stars : ✭ 84 (+460%)
Mutual labels: sort
repository [PHP 7] Implementation and definition of a base Repository in Domain land.
Stars : ✭ 26 (+73.33%)
Mutual labels: sort
jsonfiddle JSON Fiddling
Stars : ✭ 14 (-6.67%)
Mutual labels: sort
vim-sort-imports vim port of import-sort. Sort javascript/typescript imports
Stars : ✭ 32 (+113.33%)
Mutual labels: sort
sorting-visualization 🎨 A command-line tool to generate GIF which can display sorting algorithm
Stars : ✭ 37 (+146.67%)
Mutual labels: sort
arr-sort 🎉 多重条件下的数组排序方法
Stars : ✭ 20 (+33.33%)
Mutual labels: sort
gulp-sort Sort files in stream by path or any custom sort comparator
Stars : ✭ 22 (+46.67%)
Mutual labels: sort
batching-toposort Efficiently sort interdependent tasks into a sequence of concurrently-executable batches
Stars : ✭ 21 (+40%)
Mutual labels: sort
sort-awesome-lists Sorts awesome lists by number of stars in each GitHub repository
Stars : ✭ 56 (+273.33%)
Mutual labels: sort
Structurex Javascript visualizer of algorithms and data structures.
Stars : ✭ 32 (+113.33%)
Mutual labels: sort
NaturalSort.Extension 🔀 Extension method for StringComparison that adds support for natural sorting (e.g. "abc1", "abc2", "abc10" instead of "abc1", "abc10", "abc2").
Stars : ✭ 94 (+526.67%)
Mutual labels: sort
JYSort
详情请查看这篇 :http://jiyiren.github.io/2016/11/24/android_sort/
C语言实现各个排序算法 : https://github.com/jiyiren/CSort
Android图形化展示排序算法
快速排序
堆排序
归并排序
插入排序
冒泡排序
选择排序
界面
设计思路
数据与界面的初始化
数据是随机生成100个数组成一个数组,当然这个长度我们定义成全局变量,可以自行修改。
界面的初始化由上到下分别为Toolbar菜单栏、主体排序可视窗口、时间复杂度等。
重点在于中间主体排序可视窗口的绘制:因为可视的View就是要表示数组中各个数据的大小,因而我们就将每个柱状View的高度用于表示数组中各个数据的大小,但是由于手机界面有限,如果有的数据过大那么绘制将超出屏幕。因此我们采取将3/5个屏幕像素与数组中最大值的比值 作为每个数转为高度的一个因素,也就是说数组中数据不管多大,其高度最高最大为3/5个屏幕大小。而其宽度则是根据数组长度由屏幕宽度计算得出
排序同时界面更新
界面的中每个柱状View与数组一一对应,这样我们只需要记住排序数组的下标就可以同步View数组了。
排序是耗时操作,我们需要开启线程进行排序,因此需要用到消息传递来通知界面的变化,这里主要使用Handler 来进行处理线程消息。
整个流程为:在开启排序时,算法中的数组在进行数据交换时,我们会记录此时交换数据的两个下标,同时将这些数据包装成消息发送给Handler ,Handler 将界面柱状View数组中两个相同下标的View高度互换,达到界面显示与排序一致的效果。
排序延迟操作
由于排序算法只有在对数以万计的数据时才会有可见的时间长度,因而我们如果像正常一样设置排序和界面更新时,每个排序算法都几乎在毫秒级别完成,并且界面变化几乎不可见。
因此,我们需要让排序算法尽可能地延长一定时间,达到界面的变化可视化级别。
我们在数组交换数据时发送消息给Handler 处进行了一定的时间延迟,当然不会过长,此处设置了10ms。(也同时因为这样的设置,界面显示的耗时操作实际上并非算法真正的排序时间,而应该减去延迟时间乘以延迟操作的次数。)
快速排序
堆排序
归并排序
插入排序
冒泡排序
选择排序
关于
Note that the project description data, including the texts, logos, images, and/or trademarks,
for each open source project belongs to its rightful owner.
If you wish to add or remove any projects, please contact us at
[email protected] .