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

java选择排序和冒泡排序

1.区别

选择排序和冒泡排序的区别主要在于算法逻辑、稳定性和交换成本。

  1. 算法逻辑:选择排序和冒泡排序都属于比较排序,但在具体算法逻辑上有所不同。冒泡排序是通过相邻元素之间的比较和交换,将较大(或较小)的元素逐渐“冒泡”到数组的一端。选择排序则是先选择后交换,在一轮比较中,将最大(或最小)的元素与数组的末尾元素交换,然后在剩余的元素中继续选择和交换。
  2. 稳定性:冒泡排序是稳定的排序算法,即相等的元素的顺序不会改变。而选择排序是不稳定的排序算法,因为元素的相对顺序可能会在排序过程中发生改变。
  3. 交换成本:在交换成本方面,选择排序相较于冒泡排序有优势。冒泡排序需要相邻元素之间的比较和交换,而选择排序只需要记录下标,一轮比较结束后才进行数据的调换,因此选择排序的交换次数要少于冒泡排序。

总的来说,选择排序和冒泡排序各有其特点,需要根据具体需求和数据量来选择使用哪种排序算法。

public class ArrayTest {public static void main(String[] args) {MyTools mt = new MyTools();int[] arr = {10, -1, 8, 0, 34};mt.bubble(arr);//输出快捷键soutSystem.out.println("===冒泡排序后的arr===");for(int i = 0; i < arr.length; i++) {System.out.print(arr[i] + "\t");}mt.selectionSort(arr);System.out.print("\n");System.out.println("===选择排序后的arr===");for(int i = 0; i < arr.length; i++) {System.out.print(arr[i] + "\t");}}
}//创建一个类MyTools,完成int数组升序排序的功能
class MyTools {public void bubble(int[] arr) {int temp = 0;for(int i = 0; i < arr.length; i++) {for (int j = 0; j < arr.length - 1 -i; j++) {if(arr[j] > arr[j+1]) {temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}}public void selectionSort(int[] arr) {for (int i = 0; i < arr.length; i++) {int minValIdx = i;for (int j = i + 1; j < arr.length; j++) {if (arr[minValIdx] > arr[j]) {minValIdx = j;}}int temp = arr[minValIdx];arr[minValIdx] = arr[i];arr[i] = temp;}}
}

运行结果:

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

相关文章:

  • linux反弹shell
  • Go字符串类型
  • DjiTello + YoloV5的无人机的抽烟检测
  • 数据库取多个时间字段的最大值
  • C/C++ 实现Socket交互式服务端
  • kotlin 防范竞态
  • 超分辨率重建
  • 防止恶意攻击,服务器DDoS防御软件科普
  • nint和Pattern matching介绍(C#)
  • 部署jenkins一直显示Please wait while Jenkins is getting ready to work
  • Redis性能压测、监控工具及优化方案
  • 使用NVM管理多个Nodejs版同时本支持vue2、vue3
  • 局域网的网络ip不稳定问题
  • uniapp (vue3)生成二维码
  • Android11编译第八弹:root用户密码设置
  • XML Schema中的attributeFormDefault
  • 数据结构 / 结构体字节计算
  • rancher2.6 docker版本部署
  • UE5人物残影学习(材质实现)
  • Spring Boot 内置工具类
  • C语言--每日选择题--Day27
  • 黑马程序员索引学习笔记
  • 新手如何对一个web网页进行一次渗透测试
  • vs2019 - MFC对话框程序的工程名称不支持下划线命名法
  • java JDBCUtils 使用静态代码块连接数据库 全程值保持一次连接
  • 剑指 Offer(第2版)题解(C++ Version)
  • 6.15合并二叉树(LC617-E)
  • 百度智能小程序系统源码+关键词排名优化 附带完整的搭建教程
  • 2019年11月7日 Go生态洞察:Go Modules v2及更高版本
  • vue3通过provide和inject实现多层级组件通信