[LintCode] Sort Integers II [Merge-sort, Quick-sort, Heap-sort]

Problem

Given an integer array, sort it in ascending order. Use quick sort, merge sort, heap sort or any O(nlogn) algorithm.

Example

Given [3, 2, 1, 4, 5], return [1, 2, 3, 4, 5].

Note

考察对Heap Sort, Quick Sort, Merge Sort的掌握。

Solution

Merge Sort

public class Solution {    public void sortIntegers2(int[] A) {        if (A.length = end) return;        int mid = start + (end - start) / 2;        sort(A, start, mid, B);        sort(A, mid+1, end, B);        merge(A, start, mid, end, B);    }    public void merge(int[] A, int start, int mid, int end, int[] B) {        int i = start, j = mid+1, index = start;        while (i 0;i--){            exchange(0, i);            n=n-1;            maxheap(a, 0);        }    }    public static void buildheap(int []a){        n=a.length-1;        for(int i=n/2;i>=0;i--){            maxheap(a,i);        }    }    public static void maxheap(int[] a, int i){         left=2*i;        right=2*i+1;        if(left  a[i]){            largest=left;        }        else{            largest=i;        }        if(right  a[largest]){            largest=right;        }        if(largest!=i){            exchange(i,largest);            maxheap(a, largest);        }    }    public static void exchange(int i, int j){        int t=a[i];        a[i]=a[j];        a[j]=t;     }}

Quick Sort

public class Solution {    public void sortIntegers2(int[] A) {        if (A.length = end) return;        int mid = start+(end-start)/2;        int pivot = A[mid], i = start, j = end;        while (i  pivot) j--;            if (i <= j) {                int temp = A[i];                A[i] = A[j];                A[j] = temp;                i++;                j--;            }        }        quicksort(A, start, j);        quicksort(A, i, end);    }}

关键字:heap, sort, quicksort, java


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部