当前位置: 首页 > news >正文

选择排序(学习笔记)

选择排序

选择排序的基本思想是冒泡排序,记录当前位置i和最小值k的位置,使用一个变量j往后寻找。
每一轮找到最小值后与第一个元素进行交换,以此类推。
在这里插入图片描述
不使用辅助变量交换两个元素的值方法

package com.company.sort;import java.util.Random;//选择排序的基本思想是冒泡排序,记录当前位置i和最小值k的位置,使用一个变量j往后寻找。
//  每一轮找到最小值后与第一个元素进行交换,以此类推。
public class SelectSort {public static final int ARRLENGTH = 10;public static void main(String[] args) {//创建数组int[] unSortArray = createArray(ARRLENGTH);//打印初始化未排序数组printArray(unSortArray);//选择排序selectSort(unSortArray);//打印选择排序后的数组printArray(unSortArray);}//创建数组方法(数组中的元素随机生成)public static int[] createArray(int length){int[] arr =new int[length];Random random = new Random();for (int i = 0; i < arr.length; i++) {arr[i] = random.nextInt(20);//[0,20)}return arr;}//打印数组方法public static void printArray(int[] arr){for (int i=0;i<arr.length;i++) {if (i==0){if (arr.length==1){System.out.println("["+arr[0]+"]");}else{System.out.print("["+arr[i]+",");}}else if(i==arr.length-1){System.out.println(arr[i]+"]");}else {System.out.print(arr[i]+",");}}System.out.println("--------------------------------------------------------");}//选择排序法public static void selectSort(int[] arr){for (int i = 0; i < arr.length; i++) {int k=i;for (int j = i+1; j <arr.length ; j++) {if (arr[k]>arr[j]){k = j;}}//这里不知为何不使用辅助变量的两种交换元素方法不适用/*arr[i] = arr[i]+arr[k];arr[k] = arr[i]-arr[k];arr[i] = arr[i]-arr[k];-------------------------------a= a^b;b =a^ba =a^b;*/int temp = arr[i];arr[i] = arr[k];arr[k] = temp;}}/*   public static void selectSort(int[] arr,int length){for (int i = 0; i < length; i++) {int k = i;for (int j = i+1; j <length ; j++) {if (arr[j]<arr[k]){k = j;}}int temp = arr[i];arr[i] = arr[k];arr[k] = temp;}}*/
}

核心代码示意图:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

http://www.lryc.cn/news/194255.html

相关文章:

  • PCL 生成球形点云
  • Flutter 剪裁(Clip)
  • 嵌入式C语言自我修养《GNU C编译器扩展语法》学习笔记
  • 密码学二: md5 网站服务器与用户通信过程 ca原理 签名原理 Flame 病毒原理
  • Zend Framework 3.1.3 gadget chain
  • 互联网Java工程师面试题·Java 并发编程篇·第四弹
  • 3、Linux下安装
  • Zookeeper【Curator客户端Java版】从0到1——万字学习笔记
  • 生物标志物发现中的无偏数据分析策略
  • 华为校招机试题- 机器人活动区域-2023年
  • 半屏小程序
  • 2023年最新Python大数据之Python基础【七】管理系统
  • 【网安】网络安全防止个人信息泄露
  • ChatGPT,AIGC 数据库应用 Mysql 常见优化30例
  • 并查集路径压缩
  • spring和springMVC的说明
  • 软件工程与计算总结(十)软件体系结构设计与构建
  • 【实操】基于ChatGPT构建知识库
  • ribbonx编程笔记-读写注册表与使用自定义对话框
  • 网工记背配置命令(3)----POE配置示例
  • 网络安全(黑客技术)—0基础学习手册
  • [部署网站]01安装宝塔面板搭建WordPress
  • Can We Edit Multimodal Large Language Models?
  • 使用jsqlparser创建MySQL建表语句
  • 字符串思维题练习 DAY6 (CF 245H , CF 559B , CF 1731C , CF1109B)
  • Linux:Mac VMware Fusion13以及CentOS7安装包
  • 【微服务部署】十、使用Docker Compose搭建高可用Redis集群
  • 【数据结构】树状数组C++详解
  • 机器人制作开源方案 | 扫地机器人
  • 10.2手动推导linux中file, cdev, inode之间的关系