选择排序 思想 JAVA实现
已知一个数组 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实现的更多相关文章
- 选择排序之Java实现
		选择排序之Java实现 一.方法一 package cn.com.zfc.lesson21.sort; /** * * @title SelectSort * @describe 选择排序 * @au ... 
- 经典排序算法之-----选择排序(Java实现)
		其他的经典排序算法链接地址:https://blog.csdn.net/weixin_43304253/article/details/121209905 选择排序思想: 思路: 1.从整个数据中挑选 ... 
- Java基础(46):选择排序的Java封装(完整可运行)
		1 package lsg.ap.select; import java.util.Random; public class SelectSort { //选择排序 /** *@author: 梁山广 ... 
- 选择排序算法Java与Python实现
		Java 实现 package common; public class SimpleArithmetic { /** * 选择排序 * 输入整形数组:a[n] [4.5.3.7] * 1. 取数组编 ... 
- 选择排序法-java详解案例
		/** * 功能:选择排序法 * 思想:第一次从R[0]-R[N-1]中选取最小值,与R[0]交换,第二次从R[1]-R[N-1]中选取最小值,与R[1]交换, * 第三次从R[2]-R[N-1]中 ... 
- 【排序算法】直接选择排序算法 Java实现
		基本思想 直接选择排序是从无序区选一个最小的元素直接放到有序区的最后. 初始状态:无序区为a[1...n],有序区为空. 第一次排序:在无序区a[1...n]中选出最小的记录a[k],将它与有序区的第 ... 
- 常见排序算法总结:插入排序,希尔排序,冒泡排序,快速排序,简单选择排序以及java实现
		今天来总结一下常用的内部排序算法.内部排序算法们需要掌握的知识点大概有:算法的原理,算法的编码实现,算法的时空复杂度的计算和记忆,何时出现最差时间复杂度,以及是否稳定,何时不稳定. 首先来总结下常用内 ... 
- 选择排序(JAVA实现)
		算法思想:每一趟从待排序的记录中选出最小的元素,顺序放在已排好序的序列最后,直到全部记录排序完毕.也就是:每一趟在n-i+1(i=1,2,…n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录 ... 
- 排序算法系列:选择排序算法JAVA版(靠谱、清晰、真实、可用、不罗嗦版)
		在网上搜索算法的博客,发现一个比较悲剧的现象非常普遍: 原理讲不清,混乱 啰嗦 图和文对不上 不可用,甚至代码还出错 我总结一个清晰不罗嗦版: 原理: 从数组头元素索引i开始,寻找后面最小的值(比i位 ... 
随机推荐
- Struts2 result type(结果类型)
			转自:http://www.cnblogs.com/liaojie970/p/7151103.html 在struts2框架中,当action处理完之后,就应该向用户返回结果信息,该任务被分为两部分: ... 
- mysql中的自定义函数
			创建不带参数的自定义函数: 使用: 创建带参数的自定义函数: 使用: 创建具有复合结构的函数体的自定义函数: 
- Python常用算法
			本节内容 算法定义 时间复杂度 空间复杂度 常用算法实例 1.算法定义 算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机 ... 
- centos7使用frabric自动化部署LNMP
			1.创建lnmp.py文件 $ vim lnmp.py ------------------------> #!/usr/bin/env python from fabric.colors im ... 
- 第01章 开发准备(对最新版的RN进行了升级)1-2+项目技术分解
- EF添加和修改
			(1)//添加操作 public bool addDate() { try { //声明上下文 a_context = new AEntities(); //声明数据模型实体 //执行代码时候会先验证 ... 
- https://github.com/ildoonet/tf-pose-estimation
			https://github.com/ildoonet/tf-pose-estimation 
- 关于for循环的一个小问题
			有如下程序: package com.lk.B; public class Test5 { public static void main(String[] args) { // TODO Auto- ... 
- c语言入门教程
			https://www.youtube.com/playlist?list=PLY_qIufNHc293YnIjVeEwNDuqGo8y2Emx 感觉这个教程不错 
- Flask 之 上下文管理
			Flask上下文管理 分类: 请求上下文管理 应用上下文管理 请求上下文管理 request a. 温大爷:wsig b. 赵毅: ctx = ReuqestContext(session,reque ... 
