01 

题目解析TOPIC ANALYSIS
接下来,我们以数组{1, 2, 5, 3, 4} 为例进行讲解。
对于该数组来说,元素1和2处在已排序区间,而元素5、3、4则处在未排序区间。
定义变量i指向未排序区间的第一个元素5;定义变量minIndex,其初始值为变量i的值;定义变量j,其初始值为i+1。

接着,将变量j所指向的元素和变量minIndex所指向的元素进行比较,如果变量j所指向的元素值小于变量minIndex所指向的元素值,则将变量j的值赋予变量minIndex。在这里,j所指向的元素为3,小于minIndex所指向的元素5,因此,将变量j的值赋予变量minIndex,即minIndex指向j所指向的元素。
继续考察下一个元素,即将变量j加1。
此时,变量j所指向的元素值大于变量minIndex所指向的元素值,且变量j指向数组的末尾。因此,变量minIndex所指向的元素3,就是未排序区间中最小的元素。接下来要做的就是将变量i所指向的元素5和变量minIndex所指向的元素3,进行位置交换。

此时,元素3就处于已排序区间的末尾。
对于未排序区间的元素5和4来说,重复上述过程即可完成排序。
02代码实现CODE

public void selectionSort(int[] arr) {    for(int i = 0; i < arr.length; i++) {        int minIndex = i;        for(int j = i + 1; j < arr.length; j++) {            if (arr[j] - arr[minIndex] < 0) {                minIndex = j;            }        }        swap(arr, i, minIndex);    }}
private void swap(int[] arr, int m, int n) {    int temp = arr[m];    arr[m] = arr[n];    arr[n] = temp;}


©著作权归作者所有:来自51CTO博客作者mb5fe18fccaee95的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. (美团)巧用数组下标,轻轻松松找出所有元素
  2. 超详细!详解一道高频算法题:数组中的第 K 个最大元素
  3. Ansible 之 外部变量文件调用
  4. 动画:面试必刷之二维数组中查找一个元素
  5. 前 K 个高频元素告诉你桶排序有啥用
  6. Python办公自动化|光速对比并提取两份Word/Excel中的不同元素
  7. 动画: 快速排序 | 如何求第 K 大元素?
  8. 动画:「变量提升」引发的一场"血"案 !
  9. PHP 超全局变量之$_FILES详解

随机推荐

  1. 安卓入门教程(ps参考网络大部分教程,其中有
  2. Android的View类介绍-android的学习之旅(
  3. 小熊android学习总结:Linux内核怎样启动An
  4. Android 移动终端camera 防偷*拍设置
  5. Qt on Android:将Qt调试信息输出到logcat
  6. Android call setting 源码分析 从顶层到
  7. Android(安卓)C++多线程-创建子线程
  8. Android Service组件(1)
  9. Android(安卓)invalidate 与postInvalida
  10. Android学习笔记(11)---关于布局的一些小事