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经典排序算法:选择排序,动图演示排序过程相关推荐

  1. 一文读懂Python版的十大经典排序算法(附动图演示)

    来源:大数据DT 本文约5200字,建议阅读10分钟 排序算法是<数据结构与算法>中最基本的算法之一.本文介绍10种常见的内部排序算法,及如何用Python实现. 排序算法可以分为内部排序 ...

  2. 【排序算法】冒泡排序(动图演示) - 保姆级详解

    冒泡排序(Bubble Sort)也是一种简单直观的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来. 算法步骤 比较相邻的元素.如果第一个比第二个大,就交换 ...

  3. java快速排序直观演示代码,排序算法总结(含动图演示和Java代码实现)

    本文将围绕冒泡排序.桶排序.计数排序.堆排序.插入排序.并归排序.快速排序和选择排序,按照描述.时间复杂度(最坏情况).动态图展示和代码实现来讲解.本文默认排序为从小到大. 本文相关代码已上传至git ...

  4. 十大经典排序C++实现及动图演示

    0.算法概述 0.1 算法分类 十种常见排序算法可以分为两大类: 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序. 非比较类排序: ...

  5. 超详细八大排序+基数排序(图文并茂+动图演示+C语言代码演示)

    超详细八大排序+基数排序(图文并茂+动图演示+C语言代码演示) 插入排序-直接插入排序 插入排序-希尔排序 选择排序-直接选择排序 选择排序-堆排序 交换排序-冒泡排序 交换排序-快速排序-三种方法( ...

  6. C语言八大排序算法,附动图和详细代码解释!

    文章来源:电子工程专辑.C语言与程序设计.竹雨听闲 一.前言 如果说各种编程语言是程序员的招式,那么数据结构和算法就相当于程序员的内功. 想写出精炼.优秀的代码,不通过不断的锤炼,是很难做到的. 二. ...

  7. 硬核!C语言八大排序算法,附动图和详细代码解释!

    来源 :C语言与程序设计.竹雨听闲等 一 前言 如果说各种编程语言是程序员的招式,那么数据结构和算法就相当于程序员的内功. 想写出精炼.优秀的代码,不通过不断的锤炼,是很难做到的. 二 八大排序算法 ...

  8. 排序算法——冒泡排序原理动图详解及实现

    主要涉及的是内部排序  交换排序   => 冒泡排序   快速排序  选择排序   直接选择排序   堆排序  插入排序   直接插入排序   希尔排序  归并排序 冒泡排序 1. 简介 冒泡排 ...

  9. 排序算法-冒泡排序(可视化动图)

    冒泡排序 冒泡排序(Bubble Sort) 最为简单的一种排序,通过重复走完数组的所有元素,通过打擂台的方式两个两个比较,直到没有数可以交换的时候结束这个数,再到下个数,直到整个数组排好顺序.因一个 ...

最新文章

  1. 视频+课件| PointDSC:基于特征匹配的点云配准方法(CVPR2021)
  2. windows10 下Python3.5.4安装
  3. Downloading Android Source Code
  4. Cannot find or open the PDB file
  5. 微信开发SDK,Jeewx-Api 1.3.1 版本发布
  6. [总结]用U盘安装Ubuntu 16.04
  7. axios post json_助你解析Axios原理之一:如何实现多种请求方式
  8. ecology9 系统文件常用说明
  9. Can't connect to MySQL server on 'localhost' (10038)
  10. 廖雪峰python教程杨辉三角_打印杨辉三角(廖雪峰python教程)
  11. 基于java五子棋游戏设计与实现
  12. 熊出没之伐木机器人_盘点熊出没中李老板的五大伐木工,光头强无人能代替
  13. 无法删除文件:无法读源文件或磁盘”
  14. 将分子SMILES生成DGLGraph
  15. 清橙A1210. 光棱坦克
  16. 隐字神文,先来个隐身
  17. go redis incr的使用
  18. 史上最强ASR非特定人声语音识别模块,完爆LD3320
  19. word文档多级列表设置
  20. ORA-03113 end-of-file on communication channel 问题解决

热门文章

  1. 使用谷歌headless(puppeteer)解决SEO问题
  2. 大家知道不接收微信的“通过手机号添加的好友申请”要怎么弄吗
  3. 使用htmlUnit模拟登陆网站(有验证码和无验证码)
  4. linux mysql博客_linux mysql
  5. java全月应纳税所得额_个人所得税应纳税所得额计算公式是什么?
  6. 软件设计师一个月备考
  7. CCF小白刷题之路---201812-1 小明上学(C/C++ 100分)
  8. 我的Microsoft Visual C# 2005 Express Edition Beta 1 之旅(一) 初识一下
  9. 6-10 Strongly Connected Components(30 分)
  10. Linux 僵死进程 文件操作