java优先队列自定义排序方式 " />
冒泡排序
冒泡排序是一种简单的排序算法,原理是不断比较相邻的两个元素大小,根据大小交换位置,在每一轮循环后将最大的元素移到最后,直至排序完毕。冒泡排序的时间复杂度为O(n^2),在实际应用中不太实用。
以下是冒泡排序的示例代码(Java实现):
```java
public static void bubbleSort(int[] arr){
int len = arr.length;
for(int i = 0; i < len - 1; i++){
for(int j = 0; j < len - i - 1; j++){
if(arr[j] > arr[j + 1]){
int tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
}
}
}
}
```
上述代码中,外层循环控制轮数,内层循环控制比较和交换。每一轮循环结束后,最大的元素就会被移至数组的最后面。
优先队列
优先队列是一种具有优先级的队列,每个元素都有一个优先级,高优先级的元素会先被取出。在Java中,可以使用PriorityQueue实现优先队列。
Java优先队列自定义排序方式
默认情况下,Java优先队列使用元素的自然顺序(即实现了Comparable接口的元素类)来比较,也可以通过传入Comparator实例来自定义排序方式。
以下是一个示例代码,演示如何定义自己的排序方式:
```java
// 定义一个Student类,含有两个字段name和score
class Student{
String name;
int score;
public Student(String name, int score){
this.name = name;
this.score = score;
}
}
// 定义一个按照分数降序排序的Comparator
class ScoreComparator implements Comparator public int compare(Student s1, Student s2){ return s2.score - s1.score; } } public static void main(String[] args) { // 创建一个按分数降序排序的优先队列 PriorityQueue // 加入三个学生 queue.offer(new Student("Tom", 80)); queue.offer(new Student("Jack", 90)); queue.offer(new Student("Mary", 85)); // poll出队 while(!queue.isEmpty()){ System.out.println(queue.poll().name); } } ``` 上述代码中,定义了一个按照分数降序排序的Comparator,然后创建了一个优先队列,并传入该Comparator的实例。在加入元素时,会根据该Comparator的排序方式自动排序。 总结 本文介绍了冒泡排序及其Java实现,以及Java优先队列的基本使用和自定义排序方式的方法。冒泡排序是一种简单但效率较低的排序算法,优先队列可以在实现优先级队列等场景时发挥作用。 壹涵网络我们是一家专注于网站建设、企业营销、网站关键词排名、AI内容生成、新媒体营销和短视频营销等业务的公司。我们拥有一支优秀的团队,专门致力于为客户提供优质的服务。 我们致力于为客户提供一站式的互联网营销服务,帮助客户在激烈的市场竞争中获得更大的优势和发展机会!
发表评论 取消回复