常用排序算法
排序及分析:
1.冒泡排序及優化:
時間復雜度O(n^2)
private int getMiddle(int[] nums, int low, int high) {
int temp = nums[low];
while (low < high) {
while (low < high && temp <= nums[high]) {
high–;
}
nums[low] = nums[high];
while (low < high && temp >= nums[low]) {
low++;
}
nums[high] = nums[low];
}
nums[low] = temp;
return low;
}
class Solution {
public ListNode mergeKLists(ListNode[] lists) {
if(lists.length0)
return null;
return solve(lists,0,lists.length-1);
}
public ListNode solve(ListNode[] arr,int left,int right){
if(leftright)
return arr[left];
int mid=(left+right)>>1;
ListNode nodel = solve(arr,left,mid);
ListNode noder = solve(arr,mid+1,right);
return merge(nodel,noder);
}
//下面一段可以作為兩個鏈表排序
public ListNode merge(ListNode node1,ListNode node2){
if(nullnode1)
return node2;
if(nullnode2)
return node1;
if(node1.val < node2.val){
node1.next = merge(node1.next,node2);
return node1;
}
else{
node2.next = merge(node1,node2.next);
return node2;
}
}
總結
- 上一篇: 基于指纹识别技术的身份认证系统的设计与实
- 下一篇: 安徽农业大学计算机考研分数线,安徽农业大