【基本思想】

假设数组为int[] a = { 49, 38, 65, 97, 76, 13, 27 },数组元素个数为7个。

第1轮比较:先是a[0]与a[1]比较,大于则先交换,再比较a[0]和a[2]......最后是a[0]与a[6]比较。总共比较6次。(此时a[0]已是数组中的最小值)

第2轮比较:先是a[1]与a[2]比较,大于则先交换,再比较a[1]和a[3]......最后是a[1]与a[6]比较。总共比较5次。

第3轮比较:先是a[2]与a[3]比较,大于则先交换,再比较a[2]和a[4]......最后是a[2]与a[6]比较。总共比较4次。

第4轮比较:先是a[3]与a[4]比较,大于则先交换,再比较a[3]和a[5]......最后是a[3]与a[6]比较。总共比较3次。

第5轮比较:先是a[4]与a[5]比较,大于则先交换,再比较a[4]和a[6]。总共比较2次。

第6轮比较:只用a[5]与a[6]比较,大于则先交换。总共比较1次。

【代码实现】

     public static int[] selectSort(int[] arr) {
// 外层for循环控制比较的是第几轮
for (int i = 0; i < arr.length - 1; i++) {
// 内层for循环控制每轮比较的次数,arr[j]是右侧待比元素
for (int j = i + 1; j < arr.length; j++) {
// 判断左是否大于右
if (arr[i] > arr[j]) {
// 交换数据
int temp;
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
return arr;
}

Java中常见的排序方式-选择排序(升序)的更多相关文章

  1. Java中的经典算法之选择排序(SelectionSort)

    Java中的经典算法之选择排序(SelectionSort) 神话丿小王子的博客主页 a) 原理:每一趟从待排序的记录中选出最小的元素,顺序放在已排好序的序列最后,直到全部记录排序完毕.也就是:每一趟 ...

  2. Java中常见的排序方法

    本博主要介绍Java中几种常见的排序算法: /* 排序方法的演示1)插入排序(直接插入排序.希尔排序)2)交换排序(冒泡排序.快速排序)3)选择排序(直接选择排序.堆排序)4)归并排序5)分配排序(基 ...

  3. 用 Java 实现常见的 8 种内部排序算法

    一.插入类排序 插入类排序就是在一个有序的序列中,插入一个新的关键字.从而达到新的有序序列.插入排序一般有直接插入排序.折半插入排序和希尔排序. 1. 插入排序 1.1 直接插入排序 /** * 直接 ...

  4. 选择排序—简单选择排序(Simple Selection Sort)原理以及Java实现

    基本思想: 在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换:然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素 ...

  5. 算法与数据结构(十三) 冒泡排序、插入排序、希尔排序、选择排序(Swift3.0版)

    本篇博客中的代码实现依然采用Swift3.0来实现.在前几篇博客连续的介绍了关于查找的相关内容, 大约包括线性数据结构的顺序查找.折半查找.插值查找.Fibonacci查找,还包括数结构的二叉排序树以 ...

  6. 排序(Sort)-----选择排序

       声明:文中动画转载自https://blog.csdn.net/qq_34374664/article/details/79545940    1.选择排序简介 选择排序(Select Sort ...

  7. 数据结构和算法(Golang实现)(20)排序算法-选择排序

    选择排序 选择排序,一般我们指的是简单选择排序,也可以叫直接选择排序,它不像冒泡排序一样相邻地交换元素,而是通过选择最小的元素,每轮迭代只需交换一次.虽然交换次数比冒泡少很多,但效率和冒泡排序一样的糟 ...

  8. Java中常见的5种WEB服务器介绍

    这篇文章主要介绍了Java中常见的5种WEB服务器介绍,它们分别是Tomcat.Resin.JBoss.WebSphere.WebLogic,需要的朋友可以参考下 Web服务器是运行及发布Web应用的 ...

  9. 选择排序—简单选择排序(Simple Selection Sort)

    基本思想: 在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换:然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素 ...

随机推荐

  1. 用layui搭建的后台框架

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. js基础学习

  3. oracle 11g完全彻底的卸载

    1.关闭oracle所有的服务.可以在windows的服务管理器中关闭: 2.打开注册表:regedit 打开路径: <找注册表 :开始->运行->regedit>  HKEY ...

  4. Confluence 6 使用 Apache 和 mod_proxy

    Atlassian 应用允许用户使用反向代理,但是 Atlassian 并不会为这个功能的配置提供支持.因此,Atlassian 也不能保证能够为这些配置提供任何支持. 如果你在配置上有任何需求,请参 ...

  5. Confluence 6 推荐的更新通知设置和禁用

    你可以设置默认的发送选项(发送 / 不发送)和默认的发送时间(每天或每周). 如何配置推荐更新电子邮件通知: 在屏幕的右上角单击 控制台按钮 ,然后选择 General Configuration 链 ...

  6. ES6笔记

    /** * Created by Administrator on 2017/4/13. */ /*---------------------Es6编码规范---------------------* ...

  7. select下拉框的数据回显

    需求描述:select框,下拉后又很多的选项,选择一个,根绝后台代码做查询,完成之后,页面上的select框还是之前选的那个值 解决思路:select本质就是 value和text一一对应,根据你的s ...

  8. laravel 中CSS 预编译语言 Sass 快速入门教程

    CSS 预编译语言概述 CSS 作为一门样式语言,语法简单,易于上手,但是由于不具备常规编程语言提供的变量.函数.继承等机制,因此很容易写出大量没有逻辑.难以复用和扩展的代码,在日常开发使用中,如果没 ...

  9. Nginx详解二十七:Nginx架构篇之安全篇

    1.常见的恶意行为:爬虫行为和恶意抓取.资源盗用 解决方案: 基础防盗链功能:不让恶意用户能轻易爬去网站对外数据 secure_link_module模块:对数据安全性提高,加密验证和失效性,适合核心 ...

  10. Nginx详解十六:Nginx场景实践篇之缓存服务

    缓存类型: 服务端缓存 代理缓存 客户端缓存 Nginx代理缓存 配置语法 使用之前需要先定义一个proxy_cache_path配置语法:proxy_cache_path path [levels= ...