Java 排序方法

public class SortMain {
	// 用于临时储值
	static int temp = 0;

	public static void main(String[] args) {
		// 需要排序的数据
		int[] Source = { 2, 4, 6, 1, 3, 5, 8, 4, 10, 18 };

		// 冒泡排序法
		// printSource(bubbleSort(Source));

		// 插入排序法
		// printSource(insertSort(Source));

		// 反转数组
		// printSource(reverseSort(Source));

		// 希尔排序法(shell)
		// printSource(shellSort(Source));

		// 选择排序法
		// printSource(selectSort(Source));

		//printSource(Source);
		// 快速排序法
		//printSource(QuickSort(Source, 0, Source.length - 1));
	}

	// 使用冒泡排序法
	public static int[] bubbleSort(int[] Source) {

		// 获取需要排序的数据
		int[] bubbleArray = Source;
		// 进行排序
		for (int i = 0; i < bubbleArray.length; i++)// 从数组第一个元素进行遍历
		{
			for (int j = i + 1; j < bubbleArray.length; j++)// 从下标为i+1的元素进行遍历
			{
				if (bubbleArray[i] > bubbleArray[j])// 对bubbleArray[i]>bubbleArray[j]进行比较
				{
					temp = bubbleArray[i]; // 将bubbleArray[i]存于临时变量中
					bubbleArray[i] = bubbleArray[j]; // 实现i和j的数据对换操作
					bubbleArray[j] = temp;
				}
			}
		}
		return bubbleArray;
	}
	
	/***
	 * 
	 * @param Source 返回数组
	 * @return
	 * 
	 * 插入排序法 Insertion Sort
	 * 简言之,插入排序就是每一步都讲一个待排数据按其大小插入到已经排序的数据中的
	 * 适当位置,知道全部插入完毕。插入排序方法分直接插入排序和折半插入排序两种,
	 * 这里只介绍直接插入排序。
	 */
	// 使用插入排序法
	public static int[] insertSort(int[] Source) {
		// 获取需要排序的数据
		int[] insertSort = Source;

		// 开始执行插入排序
		for (int i = 1; i < insertSort.length; i++) {
			for (int j = 0; j < i; j++) {
				if (insertSort[j] > insertSort[i]) {
					temp = insertSort[i];
					insertSort[i] = insertSort[j];
					insertSort[j] = temp;
				}
			}
		}
		return insertSort;
	}

	// 反转数组法
	public static int[] reverseSort(int[] Source) {
		// 获取需要排序的数据
		int[] reverseSort = Source;

		for (int i = 0; i < reverseSort.length / 2; i++) {
			temp = reverseSort[i];
			reverseSort[i] = reverseSort[reverseSort.length - i - 1];
			reverseSort[reverseSort.length - 1 - i] = temp;
		}

		return reverseSort;
	}

	// 希尔排序法
	public static int[] shellSort(int[] Source) {
		for (int increment = Source.length / 2; increment >= 2; increment /= 2) {
			// System.out.print(increment+"\t");
			System.out.println();
			for (int i = 0; i < increment; i++) {
				insertSource(Source, i, increment);
			}
		}
		System.out.println();
		// System.out.println("执行最后一步");
		printSource(Source);
		// System.out.println("执行完毕");
		insertSource(Source, 0, 1);
		// System.out.println();

		return Source;
	}

	// 希尔排序法中的调用方法
	public static void insertSource(int[] Source, int start, int inc) {
		System.out.print("start:" + start + "inc:" + inc + "\t");
		System.out.println();
		int temp;
		for (int i = start + inc; i < Source.length; i += inc) {
			System.out.println("i-------:" + i);
			for (int j = i; j >= inc; j -= inc) {
				System.out.println("j:" + j);
				if (Source[j] < Source[j - inc]) {
					temp = Source[j];
					Source[j] = Source[j - inc];
					Source[j - inc] = temp;
				}
			}
		}
	}

	/***
	 * 
	 * @param Source
	 * @return
	 * 选择排序法 Selecttion Sort
	 * 选择排序的基本思想是:对待排序的记录序列进行n-1遍的处理,第一遍是将L[1..n]中
	 * 的最小者与L[1]交换位置,第二遍处理是讲L[2..n]中的最小者与L[2]交换位置,....,第i遍
	 * 处理是讲L[i..n]中的最小者与L[i]交换位置。这样,经过i遍处理之后,前i个记录的位置就已
	 * 经从小到大的顺序排列好了。
	 * 
	 * 选择排序于冒泡排序的区别:冒泡排序每次比较后,如果发现书序不对立即进行交换,而选择排序
	 * 不立即进行交换,而是找出最小的元素后在进行交换
	 */
	// 选择排序法
	public static int[] selectSort(int[] Source) {
		// 获取需要排序的数据
		int[] selectSort = Source;

		int index;
		for (int i = 0; i < selectSort.length; i++) {
			index = i;
			for (int j = i + 1; j < selectSort.length; j++) {
				if (selectSort[index] > selectSort[j]) {
					index = j;
				}
			}
			temp = selectSort[i];
			selectSort[i] = selectSort[index];
			selectSort[index] = temp;
		}
		return selectSort;
	}

	
	/***
	 * 快速排序法
	 * 快速排序是对冒泡排序的一种改进,它的基本思想是:通过一趟排序将排序的数据分割
	 * 成独立的两部分,其中一部分的所有数据都比另一部分的所有数据都要小,然后再按此
	 * 方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数
	 * 据变成有序序列
	 */
	// 快速排序法
	static boolean bool = true;

	public static int[] QuickSort(int[] Source, int left, int right) {
		int i = left;
		int j = right;
		int temp = 0;
		int between = Source[(left + right) / 2];
		do {
			while (Source[i] < between && i <= right) {
				i++;
			}
			while (Source[j] > between && j >= left) {
				j--;
			}

			if (i <= j) {
				temp = Source[i];
				Source[i] = Source[j];
				Source[j] = temp;

				i++;
				j--;
			}

			/*if (bool) {
				printSource(Source);
				bool = false;
			}*/

		} while (i <= j);

		printSource(Source);

		if (left < j) {
			QuickSort(Source, left, j);
		}

		if (right > i) {
			QuickSort(Source, i, right);
		}

		return Source;
	}

	// 打印方法
	public static void printSource(int[] Source) {
		for (int i = 0; i < Source.length; i++) {
			System.out.print(Source[i] + "\t");
		}
		System.out.println();
	}
}
 
【思博伦】史上最详细Spirent TestCenter测试仪使用教程精讲(一)!图解超赞超详细!!! 3. 在弹出的界面中,找到菜单栏中的“Connect/Create”,选择下拉框中的“Connect to Physical/Visual Chassis”,在弹出的对话框中输入思博伦测试仪的IP地址:192.168.6.244,点击“OK”;说明:目前我们只需要使用到Raw Stream Block,不需要用到Bound Stream Block。说明:如果要使用100G模式,由于硬件限制,必须连续3个面板端口同时配置为100G使用。打开安装包,并按照提示按照即可。 阅读详情

相关推荐

告别手动标注!PDMS NakiToolkit插件安装与初体验:以Pipeline工具为例

本文详细介绍了PDMS NakiToolkit插件的安装与使用,特别是其Pipeline工具如何通过自动化标注和材料统计功能大幅提升三维工厂设计效率。从环境准备到实战演示,帮助工程师告别繁琐的手动标注工作,实现项目交付周期的大幅缩短。

weixin_30047059的博客 350

常用排序算法的Java实现(3)-冒泡排序

冒泡算法应该是知名度最高的算法了,因为这个算法的执行过程和水泡冒出水面的过程类似而得名。 方法 1.先将序列中的第一个记录R0与第二个记录R1比较,若前者大于后者,则两个记录交换位置,否则不交换 2.然后对新的第二个记录R1与第三个记录R2作同样的处理 3.依次类推,直到处理完第n-1个记录和第n个记录 从(R0,R1)到(Rn-2,Rn-1)的n-1次比较和交换过程称为一次起泡 经过...

iteye_3954的博客 140

Vscode+ROS/ROS2 开发调试基于ROS/ROS2应用环境配置

在ROS操作系统开发应用程序时,我们常常需要调试代码,验证程序的正确性。但是在用rosrun或者roslaunch启动节点后,若程序运行过程中发生错误而导致发生出错停止工作,这时候终端并不会输出具体的信息指出在何处发生了错误,具体错误的原因又是什么。往往仅仅是core dump 或者segmentation fault 等等一类的模糊提示。

Chasinglight的博客 5800

java数组排序的方法_Java数组排序方法详解

数组,其实就是一个给定了大小给定了类型的容器,在这容器中有你设定的元素,你可以对这些元素进行各种升降排列,或者找出其中特殊的元素并进行一系列的运算。数组,本身是有序的元素序列,本文我们就来看看Java数组排序的几个方法。一、冒泡排序举 个 栗 子:5 2 0 4 1 3 一个容量为七的数组排升序(降序同理,最大值变最小就ok)①从这组数中找那个冒泡的(最大的),把它踢到最后 2 0 4 1 3 5...

weixin_42510805的博客 1万+

(一)深入理解Bluez协议栈之蓝牙Mesh的支持(1/5)

BlueZ是Linux官方蓝牙协议栈。它是一个基于GNU General Public License (GPL)发布的开源项目,从Linux 2.4.6开始便成为Linux 内核的一部分。如果你是linux平台开发蓝牙的的工程师,肯定会接触过Bluez协议栈,hciconfig,hciattach,hciconfig等工具都是很好用的工具。

3321

AXI_Bus_Matrix_4x4 设计

Signal Source Width(bits) Description AWID Master AWID_WIDTH 写事务ID AWADDR Master

Starry__的博客 3768

JAVA常用4种排序方法

JAVA常用4种排序方法

qq_44231628的博客 494

【STM32实物】基于STM32的扫地机器人/小车控制系统设计

扫地机器人系统采用分层结构设计,主要包括底层硬件控制层、中间数据处理层和上层用户交互层。底层硬件控制层负责对各个硬件模块进行控制和数据采集,中间数据处理层负责对采集到的数据进行处理和解算,上层用户交互层负责与用户进行交互并显示系统状态信息。

嵌入式阿齐Archie 1万+

Java中List排序的3种方法

下面我们分别来看各种排序方法的具体实现。1.使用 Comparable 排序按照本文设计的场景,我们需要创建一个包含了用户列表的 List 集合,并按用户的年龄从大到小进行排序,具体实现代码如下:// 创建并初始化 Listadd(new Person(1, 30, “北京”));add(new Person(2, 20, “西安”));add(new Person(3, 40, “上海”));}};// 使用 Comparable 自定的规则进行排序// 打印 list 集合})

2401_89690362的博客 2226

热力学仿真软件:ANSYS CFX_(15).旋转机械仿真

创建旋转域在中选择需要设置为旋转域的区域。选择选项。设置旋转速度在设置中,指定旋转速度(单位为弧度/秒)。也可以选择选项,并输入具体值。设置旋转轴在设置中,指定旋转轴的方向和位置。通常旋转轴的方向可以使用单位向量来表示,例如[0, 0, 1]表示沿Z轴旋转。旋转轴的位置可以通过指定一个点的坐标来确定,例如[0, 0, 0]表示旋转轴通过原点。旋转机械的仿真在ANSYS CFX中是一个复杂但重要的过程。

kkchenjj的博客 1157

36 Agent Memory:如何让智能体记住该记的东西

Agent 会调用工具,只能说明它有了行动能力。要让它跨会话、跨任务持续工作,还需要一套可治理的 Memory 系统。本文讲清上下文窗口、RAG 和 Agent Memory 的区别,以及工作记忆、情景记忆、语义记忆、程序记忆该如何分层设计。

老于的笔记的专栏 89

java常用排序方法集合sort

等)使用快速排序(Dual-Pivot Quicksort)。只能用于数组(包括基本类型数组和对象数组)。方法,可以直接对列表进行排序。接口的默认方法(Java 8 引入)。等)使用归并排序(TimSort)。排序是原地进行的(即直接修改原数组)。排序是原地进行的(即直接修改原集合)。使用归并排序(TimSort)。当你需要对一个数组进行排序时。当你需要排序基本类型数组时(原地排序(直接修改原列表)。支持自定义排序规则(通过。当你需要排序对象集合时(不能用于基本类型)。不能直接用于集合)。

2301_81193552的博客 956

CAD二次开发c# .net加载cui\cuix菜单文件

public static void LoadMyCui(string cuiFile) { Document doc = Application.DocumentManager.MdiActiveDocument; object oldCmdEcho = Application.GetSystemVariable("CMDECHO"); object oldFileDia = Application.GetSys..

2127

java treeset 排序_Java TreeSet排序的2种方法

首页>基础教程>集合框架>TreeSet类Java TreeSet排序的2种方法1.自然排序,实现Comparable接口,重写compareTo方法。让元素自身具备比较性。元素需要实现Comparable接口,覆盖compareTo方法,这种方式也称为元素的自然排序或默认排序方式。排序代码如下:/* 向TreeSet集合中存储自定义对象学生按照学生的年龄进行排序 ...

weixin_28869127的博客 2068

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

java中常用排序方法

时间复杂度:O(N^2)空间复杂度:O(1)稳定性:稳定。

2301_80636823的博客 1542

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

【java】java常用排序方法效率比较

1

wphero的博客 1920

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Java中排序方法使用指南

Override// 方法1:使用匿名Comparator@Override});// 方法2:使用lambda表达式// 方法3:Java 8+ 使用方法引用虽然Java提供了高效的排序方法,但了解排序算法实现也很重要。

weixin_52578852的博客 1219

java调用排序方法有哪些_四种排序方法用java实现

用三种方法实现几个数的排序:冒泡排序,选择排序,调用Java里的库函数1、冒泡排序:顾名思义,就是将小的数一步一步往上冒,大的数一个个往下沉,下面是自己写的对冒泡排序的理解,字丑将就看一下吧。2、选择排序:以从小到大为例,定义一个变量min_inter,用于记录最小值的下标,找到最小的数放在第0位,第二小放在第1位,后面依次。3、直接调用:Arrays.sort(num3);需要导入import...

weixin_42362491的博客 1218

java compareto方法怎么排序的_深入理解Java中Comparable和Comparator排序

本文有牛旦教育原创,头条首发,转载注明来源。如何为需要的排序算法选择正确的接口?通过本文的分析讲解,我们会找到答案参考答案。 程序员经常需要将数据库中的元素排序为集合、数组或映射。在Java中,我们可以实现任何类型的排序算法。使用Comparable接口和compareTo()方法,我们可以使用字母顺序、字符串长度、反字母顺序或数字进行排序。Comparator接口允许我们以更灵活的方式做同样的事...

weixin_39958366的博客 4376

java常用的排序方法

java常用的排序方法

m0_46127185的博客 1万+

compareto方法_Java ArrayList 的不同排序方法

由于其功能性和灵活性,ArrayList是 Java 集合框架中使用最为普遍的集合类之一。ArrayList 是一种 List 实现,它的内部用一个动态数组来存储元素,因此 ArrayList 能够在添加和移除元素的时候进行动态的扩展和缩减。你可能已经使用过 ArrayList,因此我将略过基础部分。如果你对 ArrayList 还不熟悉,你可以参考它的API 文档,可以很容易理解在 ...

weixin_35902481的博客 675

java数组排序法方法_JAVA数组中五种常见排序方法

前言:几种常用的JAVA数组排序方法的整合。法一:Arrays.sort()Arrays.sort()排序方法在java中是最简单且最常用的排序方法int []arr1= {45,34,59,55};Arrays.sort(arr1);//调用方法排序即可法二:冒泡排序简单来说,冒泡排序就是重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直...

weixin_31260665的博客 2443

JAVA数组中五种常见排序方法

1、以下在main()方法中调用,然后打印出相关的数据 public class ArrTest { public static void main(String args[]) { int[] arr = {23, 12, 48, 56, 45}; //方法一:Arrays.sort() //ArrSort(arr); //...

知行合一 3631

java排序方法详解

java排序方法 在这里插入代码片

floating_fight的博客 284

java list的排序方法吗_Java对List进行排序的两种实现方法

前言Java.util包中的List接口继承了Collection接口,用来存放对象集合,所以对这些对象进行排序的时候,要么让对象类自己实现同类对象的比较,要么借助比较器进行比较排序。学生实体类,包含姓名和年龄属性,比较时先按姓名升序排序,如果姓名相同则按年龄升序排序。第一种:实体类自己实现比较(实现comparable接口:public interface Comparable ,里面就一个方法...

weixin_39520199的博客 201

java list中对象排序_java中List对象排序通用方法

本文实例讲述了java中List对象排序通用方法。分享给大家供大家参考。具体分析如下:在数据库中查出来的列表list中,往往需要对不同的字段重新排序,一般的做法都是使用排序的字段,重新到数据库中查询。如果不到数据库查询,直接在第一次查出来的list中排序,无疑会提高系统的性能。只要把第一次查出来的结果存放在session中,就可以对list重新排序了。一般对list排序可以使用Collection...

weixin_34979632的博客 3113
上一篇: 关于Gzip压缩js文件提高网站运行速度
下一篇: 关于ORA-04091异常的出现原因,以及解决方案
perfectPlans
博客等级 码龄14年 1粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值