首先 实现简单的选择排序。

简单排序的思路很简单,就是通过遍历(数组的length次)的数组,每次遍历找出最小的放到数组的第一个位置,下次遍历时就不用考虑第0位置的数从第1的位置开始找1到length中最小的数。。。

实现最简单的选择排序

    //实现选择排序的方法
public static int[] selSort(int[] arr){
//先遍历数组
for(int i = 0;i < arr.length;i++){
//在每次遍历时进行比较
for(int j = i;j < arr.length;j++){
//如果有元素大于后面的元素进行交换
if(arr[i] > arr[j]){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
//将排序后的结果返回
return arr;
}

对选择排序进行优化,在这个排序中,每次找到比原数小的数就需要进行交换这样会造成资源的浪费,我们可以先保存(当前)第一位数字,用它和其它数去比较,找到最大(或者小)的那个数的下标,在循环执行完毕后看这个数字是不是被交换过,如果交换过那就交换下标对应的数值。

     public static int[] selSort2(int[] arr){
//依旧先进行遍历
for(int i = 0;i < arr.length;i++){
//在每次遍历时保存当前位置的下标
int index = i;
//在每次遍历时进行比较
for(int j = i;j < arr.length;j++){
//这里必须时index 而不是 i ,因为index可以改,i不能改变
if(arr[index] > arr[j])
index = j;
}
//如果进行过交换那么 就交换它们的值
if(index != i){
int temp = arr[i];
arr[i] = arr[index];
arr[index] = temp;
}
}
//将交换后的结果返回
return arr;
}

最新文章

  1. PHP防止跨域提交表单
  2. SQLServer : 几个特殊函数(RAND,CHECKSUM, NEWID)
  3. 第七周PSP
  4. Iaas-cloudstack概念
  5. 开源堡垒机GateOne的安装、配置笔记
  6. Openmeeting 网页打开缓慢,视频卡的一个解决方法
  7. 【HDOJ】3466 Proud Merchants
  8. hdu3065 ac自动机
  9. 《Linux命令行与shell脚本编程大全》第十二章 使用结构化命令
  10. .NET Core快速入门教程 4、使用VS Code开发.NET Core控制台应用程序
  11. BZOJ_4443_[Scoi2015]小凸玩矩阵_二分+二分图匹配
  12. IO_ADDRESS()的实现【转】
  13. Java读取证书
  14. windows系统yolov3的安装教程(图文)
  15. Kafka中时间轮分析与Java实现
  16. (四)juc线程高级特性——线程池 / 线程调度 / ForkJoinPool
  17. 1. 怎么设置可以使得虚拟机里面既可以访问主机也可以访问局域网而且是静态ip
  18. DEX文件类型和虚拟机(摘抄)
  19. 浅谈Java变量的初始化顺序详解
  20. substr.js 字符串切割

热门文章

  1. LXML解析html代码和文件
  2. 内核运行时数据结构的操作(启用路由功能),sysctl内核设置命令
  3. JS原型链的理解和使用(二)
  4. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 表格:联合使用所有表格类
  5. 【转载】Oracle sqlplus中最简单的一些命令,设置显示的格式
  6. git github 对代码的管理
  7. VUE引入模块之import xxx from &#39;xxx&#39; 和 import {xxx} from &#39;xxx&#39;的区别
  8. 5.Nginx
  9. mysql学习指令
  10. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 辅助类:表格单元格使用了 &quot;bg-danger&quot; 类