记录遇到过的所有排序实现, 持续更新.
1. 冒泡排序: 效率O(N*N),比较N*N/2,交换N*N/4
public void bubbleSort() { int[] arr = {1, 6, 3, 5, 10, 4}; int arrLen = arr.length; // 内层循环变量 int in; // 外层循环变量 int out; // 外层循环次数 = 列表长度 - 1 for (out = arrLen - 1; out > 0; out -- ) { // 内层循环总是从最前面开始 // 依次与列表中每个元素比较 // 排除已经比较过的值, out及其之后的值 for (in = 0; in < out; in ++) { // 当前排序方式为升序排序 // 即: arr[0] < arr[1] < ... < arr[arr.length - 1] if (arr[in] > arr[in + 1]) { // 每当遇到满足条件(当前值大于后一个值)时, 就交换值 swap(arr, in, in + 1); } } } }
2. 选择排序: 效率:O(N*N),比较N*N/2,交换<N
public void selectSort() { int[] a = {1, 6, 3, 5, 10, 4}; int in; // 内层循环控制 int out; // 外层循环次数 int min; // 最小值下标 // 外层循环次数 = 列表长度 - 1 for(out=0, len = a.length - 1; out<len; out++) { // 假设第一个总是最小值 // 这一步相当于得到天平秤中其中一个盘中的砝码 min=out; // in=out+1 : 当前值无需与当前值比较 for(in=out+1; in<nElems; in++) // in下标所指定的值是天平秤中另一个砝码 // 比较符号"<"就是称的规则 // 当前需要的是较小的值放在左边, 即升序排序 if(a[in]<a[min]) min=in; // 自己与自己交换无任何意义 if (out != min) swap(out,min); } }
3. 插入排序, 序列中部分有序时效率较高, 逆序排序效率几乎与冒泡无异. 效率:O(N*N), 比较N*N/4,复制N*N/4
Public void InsertionSort() { int[] a = {3, 5, 7, 6, 10, 4}; // 外层循环次数 = 列表长度 - 1 for(int out=1, len = a.length - 1; out<len; out++) { int temp=a[out] int in=out; // 从左到右依次比较, // 其比较规则类似于冒泡, // 不同点在于每次排序列表长度都比上一次加1, 且结束条件是找到首个满足交换条件(a[in‐1]>temp)的值 // 例如: // 当 out=3, tmp=6;时 // 当前循环执行次数为2次 while(in>0 && a[in‐1]<temp) { a[in]=a[in‐1]; ‐‐in; } // 如果当前值(tmp)比所有已排序(下标out以前)的值都小时, 则插入到列表首个位置(in=0) a[in]=temp; } }
相关推荐
总结一下,Java实现拖拽列表项的排序功能主要包括以下步骤: 1. 启用UI组件的拖放功能,如设置`AllowDrop`、`CanReorderItems`和`IsSwipeEnabled`属性。 2. 监听并处理拖放事件,更新数据模型以反映拖放操作。 3. ...
对于大型数据集,`Collections.sort()`通常能提供很好的性能,但如果需要对大量不可变对象或已排序的列表进行排序,使用`TreeSet`或`LinkedHashSet`等集合类型可能会更高效,因为它们在底层实现了红黑树结构,插入和...
本文将详细介绍如何在 Java 中对包含中文姓氏的对象列表或字符串列表进行排序。 #### 二、基本概念 1. **Collator 类**:这是 Java 中用于文本排序和检索的标准类。`Collator` 类提供了与语言环境相关的字符串排序...
- 重复以上步骤,但每次比较都从上一轮结束后的下一个元素开始,直到整个列表排序完成。 3. **Java实现** - 在`SelectSortDemo`这个文件中,你可能会看到一个名为`selectSort`的方法,它接受一个整数数组作为参数...
在 Java 中,对列表进行排序的最快方法是使用Collections.sort()方法,该方法使用的排序算法是 Timsort,它是归并排序和插入排序的结合体,具有高效的性能和稳定性。 在上述代码中,使用了 Comparator 接口来实现...
以上三个知识点总结了关于 Java 排序的一些基本应用,包括基础的冒泡排序算法、使用标准库 `Collections.sort()` 进行排序以及使用 `RuleBasedCollator` 实现国际化排序等。这些技术对于编写高效、可维护的 Java ...
冒泡排序是最简单的排序算法之一,通过重复遍历待排序的元素列表,比较相邻元素并交换位置,直至列表排序完成。在Java中,冒泡排序通常使用两层循环实现。 2. 插入排序(Insertion Sort): 插入排序通过创建一个...
下面我们将深入探讨如何在Java中实现集合的分组与排序。 1. **集合分组**: 集合分组通常涉及到`GroupingBy`操作,这在Java 8引入的流(Stream)API中得到了很好的支持。`Collectors.groupingBy`方法允许我们将...
在Java编程中,`List`接口是集合框架的一部分,提供了有序、可重复的元素存储功能。当我们需要对`List`中的元素进行排序时,可以利用Java提供...通过学习和理解这个`demo`,你将能够熟练地处理基于字段的列表排序问题。
文件名`SortListUtil.java`暗示可能存在一个工具类,用于处理列表排序。这个类可能包含静态方法,提供各种排序功能,如通用的列表排序、根据特定属性的排序等。实际的代码实现取决于具体的业务需求。 总之,Java...
### JAVA冒泡排序算法详解 冒泡排序是一种简单的排序算法,它重复地遍历要排序的元素列表,比较每对相邻元素,如果它们的顺序错误就把它们交换过来。遍历列表的工作是重复进行的,直到没有再需要交换的元素,也就是...
它的名字来源于排序过程中较小的元素像气泡一样逐渐“浮”到数组或列表的顶端。这个PPT文档很可能是详细介绍了Java实现冒泡排序的过程、原理以及优化策略。 冒泡排序的工作原理可以简单概括为:通过比较相邻元素并...
### Java集合排序及Java集合类详解 #### 一、集合框架概述 集合框架是Java编程语言的核心组件之一,用于组织和操作数据集。Java集合框架提供了多种数据结构,包括列表(List)、集(Set)和映射(Map),这些数据结构...
冒泡排序的基本思想是,重复地走访过要排序的元素列表,依次比较相邻的两个元素,如果它们的顺序(如从小到大)错误就把它们交换过来。走访列表的工作是重复进行的,直到没有再需要交换的元素,表示该列表已经排序...
在Java编程中,有时我们需要对包含汉字的数据进行排序,特别是在处理中文名称或文本时。本文主要探讨如何在Java中实现汉字按照拼音进行排序,并提供相关的示例代码。 首先,Java的标准库提供了`java.text.Collator`...
我们可以将这些时间戳收集到一个数组或列表中,然后使用Java的集合框架进行排序。例如: ```java import java.io.File; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; ...
在本篇中,我们将深入探讨Java集合的排序机制以及集合类的详细使用。 首先,我们来了解一下Java集合的基本分类。Java集合主要分为两大类:List(列表)和Set(集)。List是一个有序的集合,允许元素重复,并且可以...
在Java中,可以使用`java.util.Comparator`接口自定义比较规则,根据笔画数对`List<String>`类型的汉字列表进行排序。此外,`java.text.Normalizer`类可以帮助处理Unicode编码,确保笔画计算的准确性。 总的来说,...
- **原理**:重复地走访要排序的元素列表,依次比较相邻的两个元素,如果顺序错误就交换位置,直到没有任何一对元素需要交换为止。 - **Java 实现**:实现过程中可以通过设置标志位来优化冒泡排序,一旦在一次遍历...