已知一个数组 9、29、95、47、79、37、18、56、96、22 使用选择排序是数组有序

选择排序同样是一个运行时间为O(N²)的排序算法。

算法思想:(以从小到大为例)

9、29、95、47、79、37、18、56、96、22    数组元素

0、1、  2、  3、  4、  5、  6、  7、  8、  9      数组下标

选择排序是选择一个位置进行排序,将有序元素排放在数组最左边。

第一轮排序

选择数组的第一个位置上的元素开始与其他元素进行逐个比较,即index[0]与index[1]、index[2]、index[3]、index[4]、index[5]、index[6]、index[7]、index[8]、index[9]比较,

将最小的元素放在index[0]所在的位置上。(期间进项相互比较和复制)。

第二轮排序

选择数组的第二个位置上的元素开始与其他元素进行逐个比较,即index[1]与index[2]、index[3]、index[4]、index[5]、index[6]、index[7]、index[8]、index[9]比较,

将最小的一个元素放在index[1]所在的位置上。

第三轮排序

。。。。

直到整个数组有序。

以下是通过java实现

private int[] Array;

private int currentIndex;

private int maxIndex;

public SelectOrder(int size) {
           this.Array = new int[size];
           this.currentIndex = 0;
           this.maxIndex = size-1;
}

public void insert(int value) {
           if(this.maxIndex<this.currentIndex) {
                System.out.println("数组已满");
           }else {
                this.Array[this.currentIndex++] = value;
           }
}

/**
* 选择排序的思想是“选择一个位置”进行排序,将有序元素放在数组最左边
*/
public void order() {
          for(int i=0;i<this.Array.length-1;i++) {//外层循环控制位置
               for(int j=i+1;j<this.Array.length;j++) {//里层循环进行循环比较
                     onChange(i,j);
               }
           }
}

public void onChange(int out,int in) {
            if(this.Array[out]>this.Array[in]) {
                     int temp = this.Array[in];
                     this.Array[in] = this.Array[out];
                     this.Array[out] = temp;
             }
}

public void show() {
            for (int i : Array) {
                   System.out.println(i);
            }
}

最终排序结果为: 9、18、22、29、37、47、56、79、95、96

选择排序 思想 JAVA实现的更多相关文章

  1. 选择排序之Java实现

    选择排序之Java实现 一.方法一 package cn.com.zfc.lesson21.sort; /** * * @title SelectSort * @describe 选择排序 * @au ...

  2. 经典排序算法之-----选择排序(Java实现)

    其他的经典排序算法链接地址:https://blog.csdn.net/weixin_43304253/article/details/121209905 选择排序思想: 思路: 1.从整个数据中挑选 ...

  3. Java基础(46):选择排序的Java封装(完整可运行)

    1 package lsg.ap.select; import java.util.Random; public class SelectSort { //选择排序 /** *@author: 梁山广 ...

  4. 选择排序算法Java与Python实现

    Java 实现 package common; public class SimpleArithmetic { /** * 选择排序 * 输入整形数组:a[n] [4.5.3.7] * 1. 取数组编 ...

  5. 选择排序法-java详解案例

    /**  * 功能:选择排序法 * 思想:第一次从R[0]-R[N-1]中选取最小值,与R[0]交换,第二次从R[1]-R[N-1]中选取最小值,与R[1]交换, * 第三次从R[2]-R[N-1]中 ...

  6. 【排序算法】直接选择排序算法 Java实现

    基本思想 直接选择排序是从无序区选一个最小的元素直接放到有序区的最后. 初始状态:无序区为a[1...n],有序区为空. 第一次排序:在无序区a[1...n]中选出最小的记录a[k],将它与有序区的第 ...

  7. 常见排序算法总结:插入排序,希尔排序,冒泡排序,快速排序,简单选择排序以及java实现

    今天来总结一下常用的内部排序算法.内部排序算法们需要掌握的知识点大概有:算法的原理,算法的编码实现,算法的时空复杂度的计算和记忆,何时出现最差时间复杂度,以及是否稳定,何时不稳定. 首先来总结下常用内 ...

  8. 选择排序(JAVA实现)

    算法思想:每一趟从待排序的记录中选出最小的元素,顺序放在已排好序的序列最后,直到全部记录排序完毕.也就是:每一趟在n-i+1(i=1,2,…n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录 ...

  9. 排序算法系列:选择排序算法JAVA版(靠谱、清晰、真实、可用、不罗嗦版)

    在网上搜索算法的博客,发现一个比较悲剧的现象非常普遍: 原理讲不清,混乱 啰嗦 图和文对不上 不可用,甚至代码还出错 我总结一个清晰不罗嗦版: 原理: 从数组头元素索引i开始,寻找后面最小的值(比i位 ...

随机推荐

  1. easyUI datagrid表格添加“暂无记录”显示

    扩展grid的onAfterRender事件 var myview = $.extend({}, $.fn.datagrid.defaults.view, {     onAfterRender: f ...

  2. Oracle11g-BBED安装

    oracle 11g中缺bbed包 下载地址: https://pan.baidu.com/s/19DVvIajarDjnynILNwQDWQ 密码:tmqt 1.BBED的安装 1.上传(sbbdp ...

  3. mysql 存储过程 编写注意事项

    mysql的存储过程有很多需要注意的地方,一不留神就会出错,可能调试了老半天才发现原因 1  没有return 语句 可以采用leave代替,返回直接使用select语句 比如select 1: 2. ...

  4. CentOs登陆输入root作为用户名

  5. 安装express.js(NODEJS框架)

    express.js是nodejs的一个MVC开发框架,并且支持jade等多种模板.下面简单来说说express的安装和app.js文件的配置,然后在今后的教程中一步一步使用express.js搭建个 ...

  6. jar包上传到jcenter

    H:\[BOOT]\gradle-5.0-bin\gradle-5.0\gradle.properties # in $HOME/.gradle/gradle.properties java6Home ...

  7. uva1619

    分析:这个题的关键是要找到,当某个值是最小值时它最大的影响区间时什么.可以通过单调队列(单调栈)在nlogn的时间内实现 #include <cstdio> #include <cs ...

  8. 【HDU5391】Zball in Tina Town

    [题目大意] 一个球初始体积为1,一天天变大,第一天变大1倍,第二天变大2倍,第n天变大n倍.问当第 n-1天的时候,体积变为多少.注意答案对n取模. [题解] 根据威尔逊定理:(n-1)! mod ...

  9. Redis安装文档

    1.前置条件 前置条件:linux已经可以上网,参考:https://www.cnblogs.com/ZenoLiang/p/10201875.html 2.安装redis 2.1依赖包检查 1.   ...

  10. ubuntu下不用eclipse开发cocos2d-x(命令行)

    之前在ubuntu下通过eclipse搭建开发cocos2d-x的环境,但是由于eclipse界面在ubuntu显得很丑,在里面写代码,完全没有感觉,后来我转到了win7上通过vs2010和eclip ...