我的编程空间,编程开发者的网络收藏夹
学习永远不晚

java选择排序

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

java选择排序

基本介绍

选择式排序也属于内部排序法,是从欲排序的数据中,按指定的规则选出某一元素,再依规定交换位置后达到
排序的目的。

选择排序思想:

选择排序(select sorting)也是一种简单的排序方法。它的基本思想是:第一次从 arr[0]~arr[n-1]中选取最小值,
与 arr[0]交换,第二次从 arr[1]~arr[n-1]中选取最小值,与 arr[1]交换,第三次从 arr[2]~arr[n-1]中选取最小值,与 arr[2]
交换,…,第 i 次从 arr[i-1]~arr[n-1]中选取最小值,与 arr[i-1]交换,…, 第 n-1 次从 arr[n-2]~arr[n-1]中选取最小值,
与 arr[n-2]交换,总共通过 n-1 次,得到一个按排序码从小到大排列的有序序列。

选择排序思路分析图:

在这里插入图片描述

对一个数组的选择排序再进行讲解

在这里插入图片描述

选择排序应用实例:

有一群牛 , 颜值分别是 101, 34, 119, 1 请使用选择排序从低到高进行排序 [101, 34, 119, 1]

在这里插入图片描述

代码实现:

import java.util.Arrays;public class SelectSort {public static void main(String[] args) {int[] arr = { 101, 34, 119, 1 };System.out.println("排序前");System.out.println(Arrays.toString(arr));selectSort(arr);}// 选择排序public static void selectSort(int[] arr) {// 使用逐步推导的方式来,讲解选择排序// 第 1 轮// 原始的数组 : 101, 34, 119, 1// 第一轮排序 : 1, 34, 119, 101// 算法 先简单--》 做复杂, 就是可以把一个复杂的算法,拆分成简单的问题-》逐步解决int minIndex = 0;int min = arr[0];for (int j = 0 + 1; j < arr.length; j++) {if (min > arr[j]) {// 说明假定的最小值并不是最小min = arr[j];// 重置minminIndex = j;// 重置minIndex}}// 将最小值放在arr[0],即交换if (minIndex != 0) {arr[minIndex] = arr[0];arr[0] = min;}System.out.println("第一轮后~~~");System.out.println(Arrays.toString(arr));// 第二轮minIndex = 1;min = arr[1];for (int j = 1 + 1; j < arr.length; j++) {if (min > arr[j]) {// 说明假定的最小值并不是最小min = arr[j];// 重置minminIndex = j;// 重置minIndex}}// 将最小值放在arr[0],即交换if (minIndex != 1) {arr[minIndex] = arr[1];arr[1] = min;}System.out.println("第二轮后~~~");System.out.println(Arrays.toString(arr));// 第三轮minIndex = 2;min = arr[2];for (int j = 2 + 1; j < arr.length; j++) {if (min > arr[j]) {// 说明假定的最小值并不是最小min = arr[j];// 重置minminIndex = j;// 重置minIndex}}// 将最小值放在arr[0],即交换if (minIndex != 2) {arr[minIndex] = arr[2];arr[2] = min;}System.out.println("第三轮后~~~");System.out.println(Arrays.toString(arr));}}

代码优化:

import java.util.Arrays;public class SelectSort {public static void main(String[] args) {int[] arr = { 101, 34, 119, 1 };System.out.println("排序前");System.out.println(Arrays.toString(arr));selectSort(arr);System.out.println("排序后");System.out.println(Arrays.toString(arr));}// 选择排序public static void selectSort(int[] arr) {// 使用逐步推导的方式来,讲解选择排序// 第 1 轮// 原始的数组 : 101, 34, 119, 1// 第一轮排序 : 1, 34, 119, 101// 算法 先简单--》 做复杂, 就是可以把一个复杂的算法,拆分成简单的问题-》逐步解决// 在推导过程中,我们发现了规律,因此可以使用for循环来解决// 选择排序时间复杂度是O(n^2)for (int i = 0; i < arr.length - 1; i++) {int minIndex = i;int min = arr[i];for (int j = i + 1; j < arr.length; j++) {if (min > arr[j]) {// 说明假定的最小值并不是最小min = arr[j];// 重置minminIndex = j;// 重置minIndex}}// 将最小值放在arr[0],即交换if (minIndex != i) {arr[minIndex] = arr[i];arr[i] = min;}//System.out.println("第" + (i + 1) + "轮后~~~");//System.out.println(Arrays.toString(arr));}}}

选择排序时间测试代码:

import java.text.SimpleDateFormat;import java.util.Date;public class SelectSort {public static void main(String[] args) {//int[] arr = { 101, 34, 119, 1 };int[] arr = new int[80000];for (int i = 0; i < 80000; i++) {arr[i] = (int) (Math.random() * 80000);// 生成一个【0,80000】数}Date date1 = new Date();SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String date1Str = simpleDateFormat.format(date1);System.out.println("排序前的时间是" + date1Str);selectSort(arr);Date date2 = new Date();String date2Str = simpleDateFormat.format(date2);System.out.println("排序后的时间是" + date2Str);}// 选择排序public static void selectSort(int[] arr) {// 使用逐步推导的方式来,讲解选择排序// 第 1 轮// 原始的数组 : 101, 34, 119, 1// 第一轮排序 : 1, 34, 119, 101// 算法 先简单--》 做复杂, 就是可以把一个复杂的算法,拆分成简单的问题-》逐步解决// 在推导过程中,我们发现了规律,因此可以使用for循环来解决// 选择排序时间复杂度是O(n^2)for (int i = 0; i < arr.length - 1; i++) {int minIndex = i;int min = arr[i];for (int j = i + 1; j < arr.length; j++) {if (min > arr[j]) {// 说明假定的最小值并不是最小min = arr[j];// 重置minminIndex = j;// 重置minIndex}}// 将最小值放在arr[0],即交换if (minIndex != i) {arr[minIndex] = arr[i];arr[i] = min;}//System.out.println("第" + (i + 1) + "轮后~~~");//System.out.println(Arrays.toString(arr));}}}

来源地址:https://blog.csdn.net/papillonlong/article/details/128824947

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

java选择排序

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

排序算法图解之Java选择排序

选择排序的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。本文通过图片和示例介绍了选择排序,需要的可以参考一下
2022-11-13

Java选择排序举例分析

这篇文章主要介绍“Java选择排序举例分析”,在日常操作中,相信很多人在Java选择排序举例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java选择排序举例分析”的疑惑有所帮助!接下来,请跟着小编一起来
2023-06-25

java怎么实现选择排序

要实现选择排序,可以按照以下步骤进行:1. 遍历数组,从第一个元素开始,将其视为最小值。2. 依次与后面的元素比较,若有比当前最小值更小的元素,则更新最小值。3. 遍历完一次数组后,将最小值与第一个元素进行交换。4. 重复上述步骤,从第二个
2023-08-17

JAVA小练习冒泡排序,选择排序和插入排序

冒泡:点击(此处)折叠或打开
2023-06-02

Java如何实现冒泡排序与选择排序

小编给大家分享一下Java如何实现冒泡排序与选择排序,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一.冒泡排序1.概念冒泡排序这种排序方法其实关键词就在于冒泡两个
2023-06-22

java排序算法之_选择排序(实例讲解)

选择排序是一种非常简单的排序算法,从字面意思我们就可以知道,选择就是从未排序好的序列中选择出最小(最大)的元素,然后与第 i 趟排序的第 i-1(数组中下标从 0 开始) 个位置的元素进行交换,第 i 个元素之前的序列就是已经排序好的序列。
2023-05-31

java中怎么实现冒泡排序和选择排序

这篇文章将为大家详细讲解有关java中怎么实现冒泡排序和选择排序,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1、冒泡排序冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序
2023-06-20

java选择排序和冒泡排序有什么区别

Java中的选择排序和冒泡排序是两种不同的排序算法,它们的区别主要体现在排序的方式和效率上。排序方式:选择排序:每次从未排序的元素中选择最小(或最大)的元素,将其放到已排序序列的末尾,直到所有元素都排序完毕。冒泡排序:通过相邻元素的比较和
2023-10-26

python排序算法之选择排序

这篇文章主要介绍了python排序算法之选择排序,选择排序表示从无序的数组中,每次选择最小或最大的数据,从无序数组中放到有序数组的末尾,以达到排序的效果,需要的朋友可以参考下
2023-05-17

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录