上一篇用一个简单的例子,介绍了treeset集合存储的内部过程,这里再完善其存储自定义对象保证唯一。需求:A:
* 自然排序,按照年龄从小到大排序
* B:
* 成员变量值都相同即为同一个元素自定义学生类给了出来:public class Student implements Comparable<Student> {private String name;private int age;public Student() {super();}public Student(String name, int age) {super();this.name = name;this.age = age;}...
public class HelloJava{ public static void main(String[] args) { int[] arr1 = new int[] {45,40,90,30,80,70,50}; System.out.println("排序前: "); for(int i=0; i<arr1.length; i++) { System.out.print(arr1[i]+" "); } System.out.println(); System.out.println("快速排序后:"); quickSort(arr1, 0, arr1.length-1); int[] arr2 = new int[] {11,52,4,5,65,4,2,1,45}; System.out.println("排序前: "...
数组为什么要有数组?案例:一个养鸡场有六只鸡,他们的体重分别为3kg,5kg,1kg,3.4kg,2kg,50kg。请问这六只鸡的总体重和平均体重是多少? 1publicclass test5 2{3publicstaticvoid main(String[] args) 4 {5//如果没有数组就要定义六个变量,然后算出结果,太麻烦了6//现在我们定义一个可以存放6个float类型的数组 7float arr[] = newfloat[6]; 8//给数组的各个元素赋值 9 arr[0] = 3; //3是低精度会自动转成...
1 @Test2publicvoid sorted() {3 EmployDO emp = EmployDO.builder().age("18").name("张小华").sex("男").position("服务员").build();4 EmployDO emp2 = EmployDO.builder().age("20").name("张松月").sex("女").position("服务员").build();5 EmployDO emp3 = EmployDO.builder().age("30").name("李桂芝").sex("女").position("服务员").build();6 EmployDO emp4 = EmployDO.builder().age(...
1import java.util.Arrays;2 3 4publicclass MergeSort {5 6publicstaticvoid main(String[] args) {7 MergeSort ms=new MergeSort();8int[] arr={5,44,32,4,566,67,23};9 ms.merge(arr, 0, arr.length-1);
10 System.out.println(Arrays.toString(arr));
11 }
1213void merge(int[] arr,int start,int end )
14 {
15if(start==end)
16return ;
17int mid=(start+end)/2;
18 merge(arr,start...
快速排序是一种在大多数情况下比冒泡排序效率更高(详情参考有关算法复杂度的文章)的算法。注意:许多编程语言内置的排序 API 底层实现便是基于快速排序。ES5 与 ES6 语法在实现该算法时区别不大,以下仅提供 ES5 版本。function quickSort(arr) {var len = arr.length;if (len <= 1) {return arr.slice(0); // 注意用 slice 可防范 arr[0] 为 undefined }var left = [], right = [], mid = [];mid.push(arr[0]);for (var i = 1; ...
今天在做统计功能的时候遇到这样一个问题,由于查询结果为统计的数据,即使用了sum方法生成的字段,select refDate,sum(triggerCount) as triggerCount,sum(casewhen unique_key isnullthen0else trigger_count end) as hitCount from TriggerStatistic whereuser=:userand type=:type and refDate >=:fromDate and refDate <=:toDate groupby refDate orderby hitCount asc会提示 TriggerStatistic不存在 hitCount 属性于是使用查...
默认升序package peng;import java.util.Arrays; public class Testexample {public static void main(String[] args) { int[] a = {9, 8, 7, 2, 3, 4, 1, 0, 6, 5};
Arrays.sort(a);for(int arr:a) {System.out.print(arr + " ");}}}自定义 利用Collections.reverseOrder()方法:package peng;import java.util.Arrays;
import java.util.Collections;
public class Testexample {public static void ma...
本文根据《大话数据结构》一书,实现了Java版的二叉排序树/二叉搜索树。二叉排序树介绍在上篇博客中,顺序表的插入和删除效率还可以,但查找效率很低;而有序线性表中,可以使用折半、插值、斐波那契等查找方法来实现,但因为要保持有序,其插入和删除操作很耗费时间。二叉排序树(Binary Sort Tree),又称为二叉搜索树,则可以在高效率的查找下,同时保持插入和删除操作也又较高的效率。下图为典型的二叉排序树。二叉查找树具有以下...
冒泡排序:http://blog.csdn.net/pzhtpf/article/details/7560294 1publicclass bubbleSort { 2public bubbleSort(){ 3int a[]={49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98,54,56,17,18,23,34,15,35,25,53,51}; 4int temp=0; 5for(int i=0;i<a.length-1;i++){ 6for(int j=0;j<a.length-1-i;j++){ 7if(a[j]>a[j+1]){ 8 temp=a[j]; 9 a[j]=a[j+1];
10 a[j+1]=temp;
11 ...
选择排序思想:每趟从待排序的记录序列中选择关键字最小的记录放置到已排序表的最前位置,直到全部排完。关键问题:在剩余的待排序记录序列中找到最小关键码记录。方法:–直接选择排序–堆排序
(1)简单的选择排序1、基本思想:在要排序的一组数中,选出最小的一个数与第一个位置的数交换;然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。2、实例
实现代码: public static void...
public class sortByPinyin {public static void main(String[] args) {String[] arr = { "刘刘", "李飞", "王五", "老三", "贝贝", "啊三" };Collator cmp = Collator.getInstance(java.util.Locale.CHINA);Arrays.sort(arr, cmp);List<String> list = Arrays.asList(arr);System.out.println(list);}
}原文:https://www.cnblogs.com/duanqiao123/p/9130958.html
有时间再贴算法分析图JDK7的Collections.sort()的算法是TimSort, 适应性的归并排序, 比较晦涩难懂, 这里没有实现publicclass mySort {// 冒泡排序publicstaticvoid myBubbleSort(int[] array) {int lastExchange = array.length - 1; //记录最后交换位置, 避免重复比较for (int i = lastExchange - 1; i >= 0; --i) {for (int j = 0; j <= i; ++j) {if (array[j] > array[j + 1]) {int temp = array[j];array[j] = array[j + 1]...
1.重排序 在执行程序时为了提高性能,编译器和处理器常常会对指令做重排序.重排序分三种类型: 1.编译器优化的重排序.编译器在不改变单线程程序语义的前提下,可以重新安排语句的执行顺序. 2.指令级并行的重排序.现代处理器采用了指令级并行技术(Instruction-Level Parallelism, ILP)来将多条指令重叠执行.如果不存在数据依赖性,处理器可以改变语句对应机器指令的执行顺序. 3.内存系统的重排序.由于处理器是使用缓存和读/...
Java对Map集合进行排序 实现 Comparator 接口,重写compare方法,完成自定义排序int compare(Object o1, Object o2) 返回一个基本类型的整型如果要按照升序排序,则o1 小于o2,返回-1(负数),相等返回0,01大于02返回1(正数)如果要按照降序排序,则o1 小于o2,返回1(正数),相等返回0,01大于02返回-1(负数) 使用示例如下:import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import ...