记录遇到过的所有排序实现, 持续更新.
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实现拖拽列表项的排序功能,非常不错,具有参考借鉴价值,需要的朋友可以参考下
主要给大家介绍了关于Java 8 Comparator: 列表排序的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Java8具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
最快的排序算法 java最快的排序-在Java中对列表进行排序的最快方法,排序算法数据结构
主要是对java中将汉字按照拼音排序的实现代码进行了详细的分析介绍。需要的朋友可以过来参考下,希望对大家有所帮助
java 对象集合按字段排序
用java实现了10种基础排序,其内容包括: 1.冒泡排序 2.选择排序 3.插入排序 4.快速排序 5.希尔排序 6.归并排序 7.堆排序 8.桶排序 9.基数排序 10.计数排序 如有疑问请私信我
list集合树状排序 对于前端jquery-treetable无法进行父子关联数据问题进行改进,后台传list集合前,对list进行排序,然后在返回到前台。
在数据库中查出来的列表list中,往往需要对不同的字段重新排序,一般的做法都是使用排序的字段,重新到数据库中查询。如果不到数据库查询,直接在第一次查出来的list中排序,无疑会提高系统的性能。
用java语言实现获取本机进程列表,从而进行相关其他操作。
该列表控件提供简要列表的基本操作,如数据排序、翻页功能,配置简单实用
SortDemo.java 排序示例 travelTwoDime.java 遍历二维数组 traversing.java 遍历一维数组 useStrBuf.java 使用StringBuffer示例 useString.java 使用String示例 YanghuiTri.java 构造和显示杨辉三角 第6章 ...
笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级、中级、高级等,详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情、执着,对IT的憧憬、向往!此时此...
java+按照字母表顺序排列字符串列表Java实用源码整理learns
Java 源码包 Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来...
基数排序(radix sort)又称桶排序(bucket sort),相对于常见的比较排序,基数排序是一种分配式排序,需要将关键字...为了尽可能少的消耗复制时占用的空间,桶的数据结构选择链表,为了构造队列,选择使用双向列表。
不同类型对象组成的列表,根据某个属性或者多个属性进行排序
使用字符串与数组排序技术,编写一个按照字母表顺序排列字符串列表的application。允许用户在文本区中输入字符串。在文本区域中显示结果。
主要介绍了关于java中List对象列表实现去重或取出以及排序的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面跟着小编来一起学习学习吧。
今天小编就为大家分享一篇关于List集合中对数据实现多重规则进行排序的案例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧