已知一个数组 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. hive自带的字符串函数

    1. 字符串长度函数:length 语法: length(string A) 返回值: int 说明:返回字符串A的长度 举例: hive> select length('abcedfg') f ...

  2. git配置和使用

    1.注册bitbucket用户登录bitbucket站点https://bitbucket.org/注册一个用户,注册后用户名为linjiqin,邮箱为linjiqin@dkhs.com. 2.Cre ...

  3. SpringDataRedis操作Redis简单案例

    Jedis Jedis是Redis官方推出的一款面向Java的客户端,提供了很多接口供Java语言调用.可以在Redis官网下载,当然还有一些开源爱好者提供的客户端,如Jredis.SRP等等,推荐使 ...

  4. 算法优化》关于1D*1D的DP的优化

    关于这一主题的DP问题的优化方法,我以前写过一篇博客与其有关,是关于对递推形DP的前缀和优化,那么这种优化方法就不再赘述了. 什么叫1D*1D的DP捏,就是一共有N种状态,而每种状态都要N种决策,这就 ...

  5. 【bzoj1444】[Jsoi2009]有趣的游戏

    1444: [Jsoi2009]有趣的游戏 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1007  Solved: 334[Submit][Statu ...

  6. PHP Curl请求Https接口

    在请求http的时候只需要 file_get_contents("http://www.sojson.com/open/api/weather/json.shtml?city=$Positi ...

  7. 【总结整理】原创概念原创idea---摘自《结网》

    假如你有一个原创想法,搜索引擎是否已有现成产品与自己的想法一致,如果有,研究他可以节省很多摸索的时间:若没有,那就是一个货真价实的原创idea: 第一类:受到现有产品的启发,将既有概念进行了转换. 第 ...

  8. <c:out>标签中有一个escapeXml属性 如果为escapeXml="false",则将其中的html、xml解析出来。

    <td><c:out value="${s.name}" escapeXml="false"></c:out></td ...

  9. ESP8266-iot-3

    ESP8266 WIFI操作 参考资料 模式选择 程序: 把之前的Helloworld程序复制过来改成wifi工程 先输出获取的当前模式 编译后会出错,因为os_printf的头文件没有被包含进来 结 ...

  10. React项目中的registerServiceWorker的作用

    在公司的React前端项目中,发现有一个registerServiceWorker.js文件, 很久都没弄明白这个文件是干什么用的,查询了一些资料后,了解了一些 service worker是在后台运 ...