Java经典排序算法:选择排序,动图演示排序过程
Java经典排序算法:选择排序,动图演示排序过程
示意动图:
public class Main {public static void main(String[] args) {new Main().test(5);}private void test(int size) {int[] array = new int[size];//随机制造size个整数装入array数组。makeData(array);//打印原始的未排序前数组数据。printer(array);System.out.println("###########");//对数组array排序。sort(array);//打印最终经过排序排出的结果。System.out.println("排序结果:");printer(array);}//核心:Java选择排序。//对一个数组进行排序。数组最左边是最小值,最右边是最大值。自然升序。private void sort(int[] array) {for (int i = 0; i < array.length - 1; i++) {int minIndex = findMin(array, i);swap(array, minIndex, i);//打印每一趟的结果,观察排序过程细节。printer(array);System.out.println("---------");}}/*** 从索引下标i开始(包括),寻找数组array中值最小的元素。** @param array* @param i* @return 数组中最小值的下标索引。*/private int findMin(int[] array, int i) {int min = array[i];int index = i;//扫描整个数组,寻找最小值及其下标索引。for (int j = i + 1; j < array.length; j++) {//这样的比较产生的排序结果是自然升序。if (min > array[j]) {min = array[j];index = j;}}return index;}/*** 交换数组中索引下标为i,j的两个元素。* 即把array[i]和array[j]互相交换值。** @param array* @param i* @param j*/private void swap(int[] array, int i, int j) {int temp = array[i];array[i] = array[j];array[j] = temp;}//数组结果打印器。private void printer(int[] array) {for (int i = 0; i < array.length; i++) {System.out.print(array[i] + ",");}System.out.println();}//随机制造样本数据。private void makeData(int[] array) {for (int i = 0; i < array.length; i++) {array[i] = (int) (Math.random() * 10);}}
}
输出:
1,9,3,0,7,
###########
0,9,3,1,7,
---------
0,1,3,9,7,
---------
0,1,3,9,7,
---------
0,1,3,7,9,
---------
排序结果:
0,1,3,7,9,
Java经典排序算法:选择排序,动图演示排序过程相关推荐
- 一文读懂Python版的十大经典排序算法(附动图演示)
来源:大数据DT 本文约5200字,建议阅读10分钟 排序算法是<数据结构与算法>中最基本的算法之一.本文介绍10种常见的内部排序算法,及如何用Python实现. 排序算法可以分为内部排序 ...
- 【排序算法】冒泡排序(动图演示) - 保姆级详解
冒泡排序(Bubble Sort)也是一种简单直观的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来. 算法步骤 比较相邻的元素.如果第一个比第二个大,就交换 ...
- java快速排序直观演示代码,排序算法总结(含动图演示和Java代码实现)
本文将围绕冒泡排序.桶排序.计数排序.堆排序.插入排序.并归排序.快速排序和选择排序,按照描述.时间复杂度(最坏情况).动态图展示和代码实现来讲解.本文默认排序为从小到大. 本文相关代码已上传至git ...
- 十大经典排序C++实现及动图演示
0.算法概述 0.1 算法分类 十种常见排序算法可以分为两大类: 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序. 非比较类排序: ...
- 超详细八大排序+基数排序(图文并茂+动图演示+C语言代码演示)
超详细八大排序+基数排序(图文并茂+动图演示+C语言代码演示) 插入排序-直接插入排序 插入排序-希尔排序 选择排序-直接选择排序 选择排序-堆排序 交换排序-冒泡排序 交换排序-快速排序-三种方法( ...
- C语言八大排序算法,附动图和详细代码解释!
文章来源:电子工程专辑.C语言与程序设计.竹雨听闲 一.前言 如果说各种编程语言是程序员的招式,那么数据结构和算法就相当于程序员的内功. 想写出精炼.优秀的代码,不通过不断的锤炼,是很难做到的. 二. ...
- 硬核!C语言八大排序算法,附动图和详细代码解释!
来源 :C语言与程序设计.竹雨听闲等 一 前言 如果说各种编程语言是程序员的招式,那么数据结构和算法就相当于程序员的内功. 想写出精炼.优秀的代码,不通过不断的锤炼,是很难做到的. 二 八大排序算法 ...
- 排序算法——冒泡排序原理动图详解及实现
主要涉及的是内部排序 交换排序 => 冒泡排序 快速排序 选择排序 直接选择排序 堆排序 插入排序 直接插入排序 希尔排序 归并排序 冒泡排序 1. 简介 冒泡排 ...
- 排序算法-冒泡排序(可视化动图)
冒泡排序 冒泡排序(Bubble Sort) 最为简单的一种排序,通过重复走完数组的所有元素,通过打擂台的方式两个两个比较,直到没有数可以交换的时候结束这个数,再到下个数,直到整个数组排好顺序.因一个 ...
最新文章
- 视频+课件| PointDSC:基于特征匹配的点云配准方法(CVPR2021)
- windows10 下Python3.5.4安装
- Downloading Android Source Code
- Cannot find or open the PDB file
- 微信开发SDK,Jeewx-Api 1.3.1 版本发布
- [总结]用U盘安装Ubuntu 16.04
- axios post json_助你解析Axios原理之一:如何实现多种请求方式
- ecology9 系统文件常用说明
- Can't connect to MySQL server on 'localhost' (10038)
- 廖雪峰python教程杨辉三角_打印杨辉三角(廖雪峰python教程)
- 基于java五子棋游戏设计与实现
- 熊出没之伐木机器人_盘点熊出没中李老板的五大伐木工,光头强无人能代替
- 无法删除文件:无法读源文件或磁盘”
- 将分子SMILES生成DGLGraph
- 清橙A1210. 光棱坦克
- 隐字神文,先来个隐身
- go redis incr的使用
- 史上最强ASR非特定人声语音识别模块,完爆LD3320
- word文档多级列表设置
- ORA-03113 end-of-file on communication channel 问题解决
热门文章
- 使用谷歌headless(puppeteer)解决SEO问题
- 大家知道不接收微信的“通过手机号添加的好友申请”要怎么弄吗
- 使用htmlUnit模拟登陆网站(有验证码和无验证码)
- linux mysql博客_linux mysql
- java全月应纳税所得额_个人所得税应纳税所得额计算公式是什么?
- 软件设计师一个月备考
- CCF小白刷题之路---201812-1 小明上学(C/C++ 100分)
- 我的Microsoft Visual C# 2005 Express Edition Beta 1 之旅(一) 初识一下
- 6-10 Strongly Connected Components(30 分)
- Linux 僵死进程 文件操作