1 基本思想

在未排序序列中找到最小元素,存放到未排序序列的起始位置。在所有的完全依靠交换去移动元素的排序方法中,选择排序属于非常好的一种算法,需要对比len-n-1次,但是只交换1次或者0次。

2 算法描述

①. 从待排序列中,找到最小的元素;

②. 如果最小元素不是待排序列的第一个,将其和第一个元素互换;

③. 从余下的 N – 1 个元素中,找出最小的元素,重复①、②步,直到排序结束。

3、代码实现:

public class ChoiceSort {

    public static void main(String[] args) {
int[] array = new int[]{10, 1, 9, 2, 8, 3, 7, 4, 6, 5};
choiceSort(array);
} /**
* 实例:
* 10, 1, 9, 2, 8, 3, 7, 4, 6, 5
* 1, 10, 9, 2, 8, 3, 7, 4, 6, 5
* 1, 2, 9, 10, 8, 3, 7, 4, 6, 5
* 1, 2, 3, 10, 8, 9, 7, 4, 6, 5
* @param array
*/
public static void choiceSort(int[] array) {
int len = array.length;
for (int i=0; i<len-1; i++) {
int minIndex = i;
for (int j=i; j<len-1; j++) {
// 将最小元素下标赋给minIndex
if (array[minIndex] > array[j+1]) {
minIndex = j+1;
}
}
// 最小值不是未排序序列的第一个元素,则与其交换
if (minIndex != i) {
SortUtil.swap(array, minIndex, i);
}
System.out.println(Arrays.toString(array));
}
}
}

4 Java 选择排序的更多相关文章

  1. java选择排序

    /** * 选择排序 * @param a * @date 2016-10-8 * @author shaobn */ public static void selectSort(int[] a){ ...

  2. java 选择排序法

    public class Test3 { /**@author shaobn * @param 选择排序:将a.length - i个元素分别和第i个元素相比较,小的话就将值调换.依次递减进行排列 * ...

  3. java选择排序详解

    排序算法--选择排序 public class Selector implements ISortAble{ @Override public void sort(int[] a) { int n=a ...

  4. Java选择排序,插入排序,快速排序

      public class Test { public static void main(String[] args) { int a[] = { 1, 2, 3, 4, 5 }; 选择排序(a); ...

  5. java 选择排序、冒泡排序、折半查找

    public class SortAndSelectDemo{ public static void main(String[] args){ int[] arr = {3, 5, 17, 2, 11 ...

  6. Java选择排序算法

    package com.jckb; /**选择排序 * * @author gx *算法原理: *第一个数和后面每个数进行比较,如果大于后面的数就进行位置交换, *第一次比较结束后得到了最小值 */ ...

  7. java 选择排序与冒泡排序

    选择排序与冒泡排序的特点与区别 ++++++++++++++++++++++++++++++++++++++++++++++ 选择排序 这一种简单的排序方法,它的基本思想是:R[n]第一次从R[0]~ ...

  8. java 选择排序

    import java.util.Scanner; public class SelectionSort { public static void sort(int[] a, int n){ if(n ...

  9. 算法:排序----Java选择排序

    public static void selectionSort(int[] arr) { int len = arr.length; for (int i = 0; i < len; i++) ...

随机推荐

  1. nested exception is org.apache.ibatis.binding.BindingException

    mybatis出错 xml文件: <update id="decreaseStock"> update item_stock set stock = stock - # ...

  2. vue-无限滚动

    <ul class="infinite-list" v-infinite-scroll="load" style="overflow:auto& ...

  3. 始终让footer在底部

    1.footer保持在页面底部 需求: 我们希望footer能在窗口最底端,但是由于页面内容太少,无法将内容区域撑开,从而在 footer 下面会留下一大块空白 第一种方法:采用 flexbox布局模 ...

  4. 8 java 笔记

    1 import语句可以简化编程,可以导入指定包下面的某个类或者全部类 2 java.lang,Object类是所有类的父类,要么是其直接父类,要么是其间接父类 3 子类扩展了父类,子类是一种特殊的父 ...

  5. java压缩下载图片并以zip流的形式下载到客户端

    /** * * @param page * @param rows * @param works * @return * @author ffwwzz 下载zip * @throws IOExcept ...

  6. textarea回填数据显示自适应高度

    queryTextArea(){ var textAll = document.getElementById('templaInner').querySelectorAll("textare ...

  7. 第八章· Redis API 开发

    Redis 开发 1.源码安装Python环境 Python官网:https://www.python.org/ #下载Python3.6.4安装包 [root@db03 ~]# wget https ...

  8. kubernetes资源配置之ReplicaSets

    什么是ReplicaSets? ReplicaSet的目的是维护在任何给定时间运行的稳定的副本Pod集. 因此,它通常用于保证指定数量的相同Pod的可用性 ReplicaSets怎么样工作? Repl ...

  9. 【vue lazyload】插件的使用步骤

    VUE图片懒加载-vue lazyload插件的简单使用

  10. Mybatis关联查询(转载)

    原文地址: http://www.cnblogs.com/xiaolang8762400/p/7399892.html   mybatis 提供了高级的关联查询功能,可以很方便地将数据库获取的结果集映 ...