当前位置: 首页 > news >正文

12306网站是阿里做的每天推荐新设计的网站

12306网站是阿里做的,每天推荐新设计的网站,北京电商网站开发公司哪家好,微信开发小程序步骤Java 提供了多种方式对数据进行排序#xff0c;包括数组和集合的排序。排序在日常开发中非常常见#xff0c;以下将从排序算法的基本原理、Java 中的内置排序方法以及自定义排序三方面进行详解。 1. 排序的基本概念 排序是将一组数据按特定顺序排列的过程#xff0c;常见顺…Java 提供了多种方式对数据进行排序包括数组和集合的排序。排序在日常开发中非常常见以下将从排序算法的基本原理、Java 中的内置排序方法以及自定义排序三方面进行详解。 1. 排序的基本概念 排序是将一组数据按特定顺序排列的过程常见顺序包括 升序从小到大排列如1, 2, 3, …。降序从大到小排列如10, 9, 8, …。 常见排序算法及其时间复杂度 排序算法时间复杂度平均时间复杂度最坏空间复杂度稳定性冒泡排序 (Bubble Sort) O ( n 2 ) O(n^2) O(n2) O ( n 2 ) O(n^2) O(n2) O ( 1 ) O(1) O(1)稳定插入排序 (Insertion Sort) O ( n 2 ) O(n^2) O(n2) O ( n 2 ) O(n^2) O(n2) O ( 1 ) O(1) O(1)稳定选择排序 (Selection Sort) O ( n 2 ) O(n^2) O(n2) O ( n 2 ) O(n^2) O(n2) O ( 1 ) O(1) O(1)不稳定快速排序 (Quick Sort) O ( n log ⁡ n ) O(n \log n) O(nlogn) O ( n 2 ) O(n^2) O(n2) O ( log ⁡ n ) O(\log n) O(logn)不稳定归并排序 (Merge Sort) O ( n log ⁡ n ) O(n \log n) O(nlogn) O ( n log ⁡ n ) O(n \log n) O(nlogn) O ( n ) O(n) O(n)稳定堆排序 (Heap Sort) O ( n log ⁡ n ) O(n \log n) O(nlogn) O ( n log ⁡ n ) O(n \log n) O(nlogn) O ( 1 ) O(1) O(1)不稳定 2. Java 中的内置排序方法 Java 提供了丰富的内置排序方法主要通过 Arrays 和 Collections 两个工具类实现。 (1) 使用 Arrays.sort 方法针对数组 用法 基础类型数组直接使用。引用类型数组可以传入自定义比较器。 示例代码 import java.util.Arrays;public class ArraySortExample {public static void main(String[] args) {// 基础类型数组排序int[] numbers {5, 2, 8, 1, 3};Arrays.sort(numbers); // 默认升序System.out.println(基础类型排序后 Arrays.toString(numbers));// 引用类型数组排序String[] words {apple, banana, cherry, date};Arrays.sort(words); // 默认按字典序排序System.out.println(引用类型排序后 Arrays.toString(words));// 自定义排序降序Arrays.sort(words, (a, b) - b.compareTo(a));System.out.println(自定义排序后 Arrays.toString(words));} }输出结果 基础类型排序后[1, 2, 3, 5, 8] 引用类型排序后[apple, banana, cherry, date] 自定义排序后[date, cherry, banana, apple]特点 Arrays.sort 使用 双轴快速排序Dual-Pivot Quicksort实现时间复杂度为 O ( n log ⁡ n ) O(n \log n) O(nlogn)。对基础类型排序效率极高但对引用类型需要更多内存。 (2) 使用 Collections.sort 方法针对集合 用法 专为 List 设计如 ArrayList、LinkedList 等。可以使用默认排序元素需实现 Comparable 接口或自定义比较器。 示例代码 import java.util.ArrayList; import java.util.Collections; import java.util.List;public class CollectionSortExample {public static void main(String[] args) {ListInteger numbers new ArrayList();numbers.add(5);numbers.add(2);numbers.add(8);numbers.add(1);numbers.add(3);// 默认升序排序Collections.sort(numbers);System.out.println(默认排序后 numbers);// 自定义排序降序Collections.sort(numbers, (a, b) - b - a);System.out.println(自定义排序后 numbers);} }输出结果 默认排序后[1, 2, 3, 5, 8] 自定义排序后[8, 5, 3, 2, 1]特点 Collections.sort 内部调用 List 的 sort 方法底层使用 TimSort 算法。稳定排序适合复杂对象的排序。 (3) 使用 List.sort 方法 从 Java 8 开始List 接口新增了 sort 方法可以直接传入比较器。 示例代码 import java.util.ArrayList; import java.util.List;public class ListSortExample {public static void main(String[] args) {ListString words new ArrayList();words.add(apple);words.add(banana);words.add(cherry);words.add(date);// 默认升序words.sort(String::compareTo);System.out.println(默认排序后 words);// 自定义排序按长度降序words.sort((a, b) - b.length() - a.length());System.out.println(按长度降序排序后 words);} }输出结果 默认排序后[apple, banana, cherry, date] 按长度降序排序后[banana, cherry, apple, date]3. 自定义排序 对于复杂对象需要使用 Comparable 或 Comparator 来定义排序规则。 (1) 使用 Comparable 接口 Comparable 接口用于定义自然排序需实现其 compareTo 方法。 示例代码 import java.util.ArrayList; import java.util.Collections; import java.util.List;class Student implements ComparableStudent {String name;int score;public Student(String name, int score) {this.name name;this.score score;}Overridepublic int compareTo(Student other) {return this.score - other.score; // 按分数升序}Overridepublic String toString() {return name : score;} }public class ComparableExample {public static void main(String[] args) {ListStudent students new ArrayList();students.add(new Student(Alice, 85));students.add(new Student(Bob, 92));students.add(new Student(Charlie, 78));Collections.sort(students);System.out.println(按分数升序排序 students);} }输出结果 按分数升序排序[Charlie: 78, Alice: 85, Bob: 92](2) 使用 Comparator 接口 Comparator 接口用于定义外部排序规则可以灵活调整排序逻辑。 示例代码 import java.util.ArrayList; import java.util.Comparator; import java.util.List;class Student {String name;int score;public Student(String name, int score) {this.name name;this.score score;}Overridepublic String toString() {return name : score;} }public class ComparatorExample {public static void main(String[] args) {ListStudent students new ArrayList();students.add(new Student(Alice, 85));students.add(new Student(Bob, 92));students.add(new Student(Charlie, 78));// 按分数降序排序students.sort((a, b) - b.score - a.score);System.out.println(按分数降序排序 students);// 按名字字母升序排序students.sort(Comparator.comparing(s - s.name));System.out.println(按名字升序排序 students);} }输出结果 按分数降序排序[Bob: 92, Alice: 85, Charlie: 78] 按名字升序排序[Alice: 85, Bob: 92, Charlie: 78]4. 常见排序陷阱与优化 稳定性问题 对于需要保持原始顺序的排序使用稳定排序算法如 Collections.sort 和 TimSort。 性能优化 对小规模数组使用插入排序或冒泡排序。对大规模数据使用快速排序或归并排序。 ** 避免多次比较** 使用 Comparator.comparing 链式调用时避免重复字段比较。 5. 总结 数组排序使用 Arrays.sort适合基础类型和简单对象。集合排序使用 Collections.sort 或 List.sort适合复杂对象和灵活排序需求。自定义排序通过 Comparable 和 Comparator 实现灵活定义规则。排序算法根据数据规模和需求选择合适的排序算法。 Java 内置的排序方法效率高、使用方便但理解其底层原理和优化策略可以帮助开发者更好地应对复杂排序需求。
http://www.w-s-a.com/news/263587/

相关文章:

  • 怎样做28网站代理中山网站建设方案外包
  • vs2010做网站前台搭建小网站
  • 做视频必须知道的一些网站wordpress 标签鼠标滑过_弹出的title 代码美化
  • 怎么做室内设计公司网站电商运营培训视频课程
  • 昆明网站策划天津市建筑信息平台
  • 三亚放心游app官方网站wordpress 个人主题
  • 做简单的网站备案平台新增网站
  • 中国建设网站银行网络营销推广方案整合
  • 网站域名列表dede网站白屏
  • 站长工具一区品牌建设卓有成效
  • 电子商务网站建设案例wordpress批量编辑
  • 想代理个网站建设平台100个最佳市场营销案例
  • 钟表东莞网站建设石家庄做网站时光
  • 织梦 图片网站源码成都建设工程安监局网站
  • 做兼职的网站策划书湖北省建设工程造价信息网
  • 企业网站网址长期做网站应该购买稳定的空间
  • 网站静态化设计html5手机网站制作
  • 深圳最简单的网站建设家居网站建设全网营销
  • 如何取消网站备案佛山网站优化公司
  • 网站开发 成都广水网站设计
  • 音乐网站建设目标合同管理系统
  • jq网站特效插件如何知道网站是否被k
  • 自己的网站怎么接广告网站搭建收费
  • 宁波大型网站制作建立一个网站 优帮云
  • 大连零基础网站建设教学电话有哪些比较好的做ppt好的网站
  • 哪个网站做logo设计我的建筑网
  • php电子商务网站开发沂源手机网站建设公司
  • html和php做网站哪个好3gcms企业手机网站整站源码asp
  • 网站建设网页设计案例云南建设厅网站删除
  • 杏坛网站制作太原做网站要多少钱呢