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. mqtt协议实现 java服务端推送功能(一)安装

    最近有个新需求,需要通过java服务端把信息推送到mqtt服务器上,安卓和ios端从mqtt服务器上获取信息实现推送. 1. 本地需要安装Mosquitto服务器  http://mosquitto. ...

  2. java文件上传复制等功能

    package com.sitech.message.controller.task;import java.io.File;//引入类 import java.io.FileInputStream; ...

  3. JavaScript中with不推荐使用,为什么总是出现在面试题中?

    with的基本使用 尴尬的with关键字 一.with的基本使用 with是用来扩展语句作用域的,什么意思呢?先来看看语法和示例: 语法: with(expression){ statement } ...

  4. windows下修改vagrant虚拟机中的html ,通过nginx访问后不生效

    更改本地html文件,通过nginx配置的虚拟域名访问, 无论怎么修改内容,都不变化,即使我把内容删除一半,它显示的也是以前内容的一半,除非删除文件,才会从新生成. 解决办法 修改nginx.conf ...

  5. firefox(火狐中的兼容问题总结)

    1.firefox 下 默认情况 <input   type="number"> 只允许整数其他的都会报错,红色提示: 这时候可以添加参数 step="0.0 ...

  6. 十二,k8s集群访问控制之RBAC授权

    目录 角色访问控制RBAC (Role-Based Access Control) 常用的授权插件: RBAC控制: role 和 clusterrole rolebinding 和 clusterr ...

  7. ELK展示NGINX访问IP地理位置图

    一.设置NGINX日志格式 [root@zabbix_server ~]# vim /etc/nginx/nginx.conf log_format access_json_log '{"@ ...

  8. 解决docker容器的窗口大小问题

    解决docker容器的窗口大小问题 最近哥们在是使用docker时,发现有些容器内部窗口大小有问题. 如下午所示,vi窗口只占据左上角一部分.正常情况下vi应该铺满整个窗口才对呀. 所以哥们找到了解决 ...

  9. Python tuple元组学习

    1.tuple和list非常类似,但是tuple一旦初始化就不能修改 classmates = ('Michael', 'Bob', 'Tracy') 现在,classmates这个tuple不能变了 ...

  10. LeetCode 69 x 的平方根

    链接:https://leetcode-cn.com/problems/sqrtx 实现 int sqrt(int x) 函数. 计算并返回 x 的平方根,其中 x 是非负整数. 由于返回类型是整数, ...