All Projects → jiyiren → JYSort

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
Data-Structure-Algorithm-Programs
This Repo consists of Data structures and Algorithms
Stars: ✭ 464 (+2993.33%)
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图形化展示排序算法

  • 快速排序
  • 堆排序
  • 归并排序
  • 插入排序
  • 冒泡排序
  • 选择排序

界面

main logo

设计思路

数据与界面的初始化

  1. 数据是随机生成100个数组成一个数组,当然这个长度我们定义成全局变量,可以自行修改。
  2. 界面的初始化由上到下分别为Toolbar菜单栏、主体排序可视窗口、时间复杂度等。
  3. 重点在于中间主体排序可视窗口的绘制:因为可视的View就是要表示数组中各个数据的大小,因而我们就将每个柱状View的高度用于表示数组中各个数据的大小,但是由于手机界面有限,如果有的数据过大那么绘制将超出屏幕。因此我们采取将3/5个屏幕像素与数组中最大值的比值作为每个数转为高度的一个因素,也就是说数组中数据不管多大,其高度最高最大为3/5个屏幕大小。而其宽度则是根据数组长度由屏幕宽度计算得出

排序同时界面更新

  1. 界面的中每个柱状View与数组一一对应,这样我们只需要记住排序数组的下标就可以同步View数组了。
  2. 排序是耗时操作,我们需要开启线程进行排序,因此需要用到消息传递来通知界面的变化,这里主要使用Handler来进行处理线程消息。
  3. 整个流程为:在开启排序时,算法中的数组在进行数据交换时,我们会记录此时交换数据的两个下标,同时将这些数据包装成消息发送给Handler,Handler将界面柱状View数组中两个相同下标的View高度互换,达到界面显示与排序一致的效果。

排序延迟操作

  • 由于排序算法只有在对数以万计的数据时才会有可见的时间长度,因而我们如果像正常一样设置排序和界面更新时,每个排序算法都几乎在毫秒级别完成,并且界面变化几乎不可见。
  • 因此,我们需要让排序算法尽可能地延长一定时间,达到界面的变化可视化级别。
  • 我们在数组交换数据时发送消息给Handler处进行了一定的时间延迟,当然不会过长,此处设置了10ms。(也同时因为这样的设置,界面显示的耗时操作实际上并非算法真正的排序时间,而应该减去延迟时间乘以延迟操作的次数。)

快速排序

logo

堆排序

logo

归并排序

logo

插入排序

logo

冒泡排序

logo

选择排序

logo

关于

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].