【算法】Java中的常见排序Sort

Cycle Sort循环排序算法的Java实现 Cycle Sort算法的原理是通过不断地将元素放到它应该出现的位置来进行排序。具体而言,它通过遍历数组,对每个元素找到其正确的位置,并将其交换到正确位置上。这就是Cycle Sort循环排序算法的Java实现。它是一种高效的原地排序算法,适用于一些特定的情况,例如对于需要最小化写入操作的磁盘排序等。它主要用于对数组进行排序,并且具有原地排序的特点,不需要额外的空间。在本文中,我将为您介绍Cycle Sort算法的实现,并提供相应的Java代码示例。最后,我们打印排序前和排序后的数组。 阅读详情

排序算法算是常见的面试题吧,也是锻炼思维的一种方式。目前找到最好的介绍排序的博客是《八大排序算法总结与java实现》,主要是参考这个

  • 冒泡排序 Bubble Sort
  • 插入排序 Insertion Sort
  • 快速排序 Quick Sort
  • 选择排序 Selection Sort
  • 希尔排序 Shell Sort
  • 堆排序 Heap Sort
  • 归并排序 Merging Sort
  • 基数排序 Radix Sort

冒泡排序 Bubble Sort

这个是学C语言时遇到的第一个排序算法

/**
 * @param arr
 * @return
 * @description 冒泡排序
 * @author paul
 * @date 2017年5月30日 下午9:49:35
 * @update 2017年5月30日 下午9:49:35
 * @version V1.0
 */
public static void bubbleSort(int[] arr) {
	//数据长度只有1,则本身就是有序的
	if (arr.length == 1)
		return;
	int temp;
	for (int i=0; i<arr.length-1; i++) {
		//没有进行交换表示数组已经为有序状态,可提前结束循环
		boolean isOver = true;
		for (int j=0; j<arr.length-1; j++) {
			if (arr[j] > arr[j+1]) {
				temp = arr[j];
				arr[j] = arr[j+1];
				arr[j+1] = temp;
				isOver = false;
			}
		}
		if (isOver)
			break;
	}
}

插入排序 Insertion Sort

/**
 * @param arr
 * @return
 * @description 插入排序
 * @author paul
 * @date 2017年5月30日 下午10:09:52
 * @update 2017年5月30日 下午10:09:52
 * @version V1.0
 */
public static void insertSort(int[] arr) {
	//数据长度只有1,则本身就是有序的
	if (arr.length == 1)
		return;
	int temp;
	for (int i=1; i<arr.length; i++) {
		for (int j=i; j>0; j--) {
			if (arr[j] < arr[j-1]) {
				temp = arr[j];
				arr[j] = arr[j-1];
				arr[j-1] = temp;
			}
		}
	}
}

快速排序 Quick Sort

参考:《 啊哈!算法》

快排的重要思想是分治,进行切分后排序。

/**
 * @param arr
 * @return
 * @description 快速排序
 * @author paul
 * @date 2017年5月30日 下午10:15:35
 * @update 2017年5月30日 下午10:15:35
 * @version V1.0
 */
public static void quickSort(int[] arr, int left, int right) {
	//数据长度只有1,则本身就是有序的
	if (arr.length == 1 || left > right)
        return;
	int i=left,j=right,temp=arr[left],t;//temp存的是基准数
	while (i != j) {
		//顺序很重要,先从右往左找
		while (arr[j] >= temp && j > i)
			j--;
		//在从左往右找
		while (arr[i] <= temp && i < j)
			i++;
		//交换两个数在数组中的位置
		if (i < j) {
			t = arr[i];
			arr[i] = arr[j];
			arr[j] = t;
		}
	}
	//最终将基准数归位
	arr[left] = arr[i];
	arr[i] = temp;
	quickSort(arr, left, i - 1);
	quickSort(arr, i + 1, right);
}

选择排序 Selection Sort

/**
 * 选择排序
 * @param arr
 */
public static void selectionSortTest(int[] arr) {
    for (int i = 0; i < arr.length; i++) {
        int min = arr[i];
        int index = i;
        for (int j = i; j < arr.length; j++) {
            if (arr[j] < min) {
                min = arr[j];
                index = j;
            }
        }
        arr[index] = arr[i];
        arr[i] = min;
    }
}

未完待续…

Dutch National Flag Sort排序问题算法的Java实现 它通过多次交换数组中的元素,将值为0的元素排在前面,值为1的元素排在中间,值为2的元素排在后面。Dutch National Flag Sort(荷兰国旗排序)算法是一种用于对只包含三个不同元素的数组进行排序的算法。该算法的目标是将数组中的元素按照升序排列,并且所有值为0的元素排在前面,值为1的元素排在中间,值为2的元素排在后面。该算法的基本思想是使用三个指针来遍历数组,并根据当前指针指向的元素值进行相应的交换操作。,分别表示当前值为0的元素应放置的位置、当前遍历的位置以及当前值为2的元素应放置的位置。 阅读详情

相关推荐

贝塞尔曲线原理--曲线生成--路径规划--matlab代码

贝塞尔曲线有着很多特殊的性质, 在图形设计和路径规划中应用都非常广泛, 在路径规划中贝塞尔曲线完全由其控制点决定其形状, n个控制点对应着n-1阶的贝塞尔曲线,并且可以通过递归的方式来绘制.

bob595078694的博客 1万+

详述Java中sort排序函数

手写一个排序算法的效率是很慢的,当然这也不利于我们在比赛或者工程中的实战,如今几乎每个语言的标准库中都有排序算法,今天让我来给大家讲解一下Java语言中的sort排序Collections类中的sort方法可以实现List接口的集合进行排序 降序排序 Java中降序排序有俩种方法(和c++很类似,可以看我这篇博客): c++sort排序 实现 Comparator 接口的复写 compare() 方法 排序原理 通常,在看有关算法书籍的时候,会发现都说有关数组的排序算法,而且使用的都是随机访问,但是

秋名山码民的技术小屋 4万+

从Si3N4到SiNx:一文搞懂芯片制造中氮化硅的化学式玄机(附工艺参数影响)

本文深入探讨了芯片制造中氮化硅(SiNx)化学式的调控艺术,揭示了从Si3N4到SiNx的转变如何影响材料性能。通过分析PECVD和PVD工艺参数对x值的精确调控,以及x值对电学和机械性能的影响,为半导体制造提供了实用的工艺优化策略。

weixin_30776273的博客 190

Java 中使用 sort() 方法排序:从基本原理到多种用法全面总结;sort()函数的使用

Java 中使用 sort() 方法排序:从基本原理到用法详解,sort()函数怎么使用,sort()使用方法总结,包含升序,降序逆序,部分排序,自定义排序,lambda表达式,多级排序,cmp等等......蓝桥杯备赛,蓝桥杯java组,leetcode,java;Arrays.sort;Collections.sort;Comparator

weixin_72499901的博客 3万+

数学不好是原罪——高等数学笔记(汇总版)

这是本人之前考研的高数手写笔记,工科学硕数一考了146(满分150),笔记有一定参考价值,欢迎大家收藏借鉴。

xuuyann 5万+

双传声器法测量吸声材料的吸声系数(公式推导与解释)

在双传声器法中,通过测量两个位置的声压 p1和 p2​,可以分离出入射波和反射波的声压分量。双传声器法一般在阻抗管中进行,阻抗管的一端为平面波声源,另一端放置待测材料。两个传声器放置在靠近材料的阻抗管内,用于测量管道内的声压。双传声器法是一种常用于测量材料吸声系数的实验方法,通过在管道内使用两个传声器测量声波的入射和反射,来计算出材料的吸声系数。当测试样品较少时,测试时,需要交换两个传声器的位置,目的是为了相位校准。

m0_57407372的博客 1875

笔记--java sort() 方法排序

能掌握到的知识 1. 了解compaer(O1 ,O2) 中 返回1 -1 0 这三个什么意思 并且如何使用这三个值达到自己想要的排序 2. 如何实现组合排序 即满足排序1情况下进行排序2

Vibugs的博客 8105

3、灵巧手的设计与构造

本文详细探讨了灵巧手的设计与构造,包括多指结构、关节和连杆设计、传感器集成以及分层控制架构等内容。同时,通过工业装配、医疗手术辅助和日常生活辅助等实际应用案例,展示了灵巧手的灵活性和适应性,并分析了当前设计面临的挑战及未来发展方向。

brandy的博客 485

java sort方法详解

详解JDK中的sort函数

PoisonKiller的博客 9974

数字逻辑Fundamentals of Digital Logic with Verilog Design | 3rd Edition Solutins Chapter 3(step by step)

第三章3-1~3-27全部习题解析和代码模块

weixin_62651190的博客 1946

利用autojs制作抢购支付宝消费劵的手机脚本

前期准备工作 1.打开支付宝,点击中间的抢消费券的广告 2.点击左上角,将抢购页面添加到首页 3.查看支付宝首页是否出现消费劵 . autojs代码 "auto"; functiontaskstart(){ sleep(1000); launchApp('支付宝'); toast("正在打开支付宝应用"); sleep(1000); varxf=textContains("消费").findOne().bounds(); ...

洛阳泰山的博客 1万+

Java Sort方法

Java的sort方法就是排序,而且排的是升序,你要想降序可以先获得升序的,然后倒过来或者你重新写比较器Comparator的接口就可以。 一 sort 排序方法本身 这里讲的sort方法,都是以Arrays类里面的方法为准,因为很多类的sort方法都是引用的Arrays类的方法,有的就是加一个比较器作为参数就完事了,比如说ArrayList的sort方法。 以下是ArrayList的排序方法 @Override @SuppressWarnings("unchecked") publ

FeiChangWuRao的博客 1万+

(14-3)值分布式算法:QR-DQN (Quantile Regression DQN)算法

QR-DQN(Quantile Regression DQN)是一种强化学习算法,它是深度 Q-网络(Deep Q-Network,DQN)的一个变种,旨在更好地处理值函数的不确定性。QR-DQN的实现步骤与传统的DQN类似,但在目标分布计算和损失函数方面有一些不同之处,这使得它能够更好地处理值函数的不确定性。QR-DQN(Quantile Regression DQN)算法的核心思想是将值函数表示为一个分布,而不是传统的单一值估计。在下面的内容中,将讲解一个使用QR-DQN算法的例子。

码农三叔 2052

Java的Arrays.sort()方法到底用的什么排序算法

Java的Arrays.sort()方法到底用的什么排序算法 . 转:https://www.cnblogs.com/baichunyu/p/11935995.html . 暂时网上看过很多JDK8中Arrays.sort的底层原理,有些说是插入排序,有些说是归并排序,也有说大于域值用计数排序法,否则就使用插入排序。。。其实不全对。让我们分析个究竟: // Use Quicksort on small arrays if (right - left < QUICKSORT_THRESHOLD)

yuanchangliang的博客 1万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Java中sort的底层原理及底层排序算法解析 Arrays.sort() Collections.sort()

方法排序对象底层调用数组(基本类型 / 对象)根据类型和长度选择不同排序List(如 ArrayList)转为数组后调用,再拷回集合时间复杂度最好 O(n)(已排序)最坏 O(n²)(逆序)空间复杂度:O(1)稳定性:✅ 稳定适用场景:小数组 / 基本类型数组的小规模排序时间复杂度平均 O(n log n)最坏 O(n²)空间复杂度:O(log n)(递归栈)稳定性:❌ 不稳定适用场景:中等规模基本类型数组;重复元素多时效果好时间复杂度:始终 O(n log n)空间复杂度:O(n)稳定性。

qq_45841039的博客 1037

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Java的Arrays.sort():排序算法与优化分析

Java的Arrays.sort()方法根据数据类型采用不同算法:基本类型使用双轴快速排序,通过三向切分、插入排序优化小数组等策略提升效率;对象数组则采用TimSort算法,利用自然有序片段和归并排序实现稳定高效排序。两种算法均针对不同场景优化,确保在各类数据上都能达到最佳性能。

qq_43947876的博客 1173

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Arrays.sort与Collections.sort:深入解析Java中的排序算法

Arrays.sort和Collections.sort是最常用的两种。尽管它们都旨在实现数据的排序,但在实现细节、算法选择以及应用场景上却存在显著的差异。本文将深入探讨这两种排序方法,并详细解析它们背后的排序算法,以期为Java开发者提供更为全面的指导。

星途码客的博客 1592

猴子排序(Bogo Sort)算法的Java实现

猴子排序(Bogosort)是一个很有趣也很容易理解的算法,算法的逻辑简单来说就是让一只猴子把写有数字的纸片随机排序,如果猴子排出来的是有序的数组,那么就结束该过程,否则将继续重复这一步骤,直到排出有序数组为止。 该算法的最优时间复杂度是O(n),平均时间复杂度是O(n*n!),最糟糕的情况下可能会无限执行下去。 目前没有在网上找到猴子排序法的java实现,因此就自己写了一下,博君一笑。 publ...

Citurs430的博客 2793

JAVA Arrays.sort()中的排序算法总结

Java的Arrays.sort()方法到底用的什么排序算法 暂时网上看过很多JDK8中Arrays.sort的底层原理,有些说是插入排序,有些说是归并排序,也有说大于域值用计数排序法,否则就使用插入排序。。。其实不全对。让我们分析个究竟: 1 // Use Quicksort on small arrays 2 if (right - left < QUICKSORT_THRESHOLD)...

breeze210的博客 509

java arrays.sort排序_Java下的Arrays排序sort算法源码解析(下)

知识回顾在上一章节中,我们介绍了关于Java下的Arrays排序sort算法的数组长度不超过QUICKSORT_THRESHOLD数值为286时的算法应用,分别有插入排序,双轴快排,单轴快排和结对插入排序。Java下的Arrays排序sort算法源码解析(上)。今天我们来探索另外一种情况。探索开始我们先附上下一段的源码来进行分析:/** Index run[i] is the start of i...

weixin_32102305的博客 264

Java排序算法Sort源码分析

Java排序算法Sort源码分析

xmelon 1385

java排序算法_008地精排序(Gnome Sort)

package wzs.sort; import java.util.Arrays; //地精排序(Gnome Sort) 最简单的排序算法 public class Test_wzs004 { public static void main(String[] args) { int intArray[] = {

那些疯狂到以为自己能够改变世界的人,才能真正改变世界! 981

java选择法排序百度经验,Arrays.Sort()中的那些排序算法

本文基于JDK 1.8.0_211撰写,基于java.util.Arrays.sort()方法浅谈目前Java所用到的排序算法,仅个人见解和笔记,若有问题欢迎指证,着重介绍其中的插入排序以及TimSort排序,其源于Python,并于JDK1.7引入Java以替代原有的归并排序。本文基于JDK 1.8.0_211撰写,基于java.util.Arrays.sort()方法浅谈目前Java所用到的排...

weixin_39730263的博客 175

java JDK中Arrays.sort的排序算法分析

1、常见的排序算法 常见的排序算法有选择排序、插入排序、冒泡排序等基本的排序算法 高级一点的排序算法有快速排序算法,核心思想是从数组中挑选一个元素,使这个元素在正确的位置,比如左边的元素都不大于它,右边的元素都不小于它,一次递归,到最后子数组的大小为2或为1的时候,子数组有有序了,整个大数组就有序了。 归并排序算法,核心思想是将两个有序的数组的数组合并成一个数组。 希尔算法,整个算法比较特...

weixin_42739473的博客 2286

【算法复习4】C++ STL 中的 sort()和Java 语言中的 Collections.sort()通用的、高性能的排序函数

【算法复习4】C++ STL 中的 sort()和Java 语言中的 Collections.sort()通用的、高性能的排序函数经典排序算法快排优化1. 三数取中法2. 随机法快排避免堆栈溢出评论区大佬的笔记Arrays.sortTimsort谷歌V8 QuickSort排序思考过程比答案重要,有答案来验证自己的思考是否准确在初学时期也很重要 经典排序算法 首选时间复杂度是 O(nlogn) 堆排序和快速排序都有比较多的应用, Java 语言采用堆排序实现排序函数 C 语言使用快速排序实现排序函数

韩旭051的博客 848

java arratlist sort_Java.util.ArrayList.sort()排序算法

我正在看grepcode上java.util.ArrayList的sort()方法的源代码。 他们似乎在小数组(大小<7)上使用插入排序,在大数组上使用合并排序。 我只是想知道这是否有很大的不同,因为它们仅对大小小于7的数组使用插入排序。在现代计算机上,运行时间的差异几乎不会引起注意。我在科门读过:Although merge sort runs in O(n*logn) worst-cas...

weixin_42370434的博客 445
上一篇: 【js】点击radio后的文字实现选中效果
下一篇: 【Java】Java遍历删除集合中的元素
ColdFireMan
博客等级 码龄10年 27粉丝 112原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值