一、题目
-
描述:
给定一个数组,请你编写一个函数,返回该数组排序后的形式。 -
示例1
输入:[5,2,3,1,4]
返回值:[1,2,3,4,5] -
示例2
输入:[5,1,6,2,5]
返回值:[1,2,5,5,6]
二、题解
- 思路:
堆排序,用优先队列实现。 - 注意点:
排序算法很多,O(n^2)的会超时,如冒泡排序。
三、代码(Java)
public int[] MySort (int[] arr) {
// 优先队列
PriorityQueue<Integer> q = new PriorityQueue<Integer>();
for(int i=0; i<arr.length; i++){
// priorityqueue入队会自动调整位置
q.add(arr[i]);
}
for(int i=0; i<arr.length; i++){
// poll()返回队首元素且队首元素出队列,若只要返回队首元素则用peek()
arr[i] = q.poll();
}
return arr;
}
另附超时的冒泡排序代码:
public int[] MySort (int[] arr) {
int length = arr.length-1;
while(length>=1){
for(int i=0; i<length; i++){
if(arr[i]>arr[i+1]){
int temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
length--;
}
return arr;
}