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

news/2024/7/2 1:20:58

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 <= 1) return;
        int[] B = new int[A.length];
        sort(A, 0, A.length-1, B);
    }
    public void sort(int[] A, int start, int end, int[] B) {
        if (start >= 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 <= mid && right <= end) {
            if (A[i] < A[j]) B[index++] = A[i++];
            else B[index++] = A[j++];
        }
        while (i <= mid) B[index++] = A[i++];
        while (j <= end) B[index++] = A[j++];
        for (int k = start; k <= end; k++) A[k] = B[k];
    }
}

Heap Sort

public class Solution {
    private static int[] a;
    private static int n;
    private static int left;
    private static int right;
    private static int largest;
    public void sortIntegers2(int[] A) {
        a = A;
        buildheap(a);
        for(int i=n;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 <= n && a[left] > a[i]){
            largest=left;
        }
        else{
            largest=i;
        }
        
        if(right <= n && a[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 <= 1) return;
        quicksort(A, 0, A.length-1);
    }
    public void quicksort(int[] A, int start, int end) {
        if (start >= end) return;
        int mid = start+(end-start)/2;
        int pivot = A[mid], i = start, j = end;
        while (i <= j) {
            while (i <= j && A[i] < pivot) i++;
            while (i <= j && A[j] > 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);
    }
}

http://www.niftyadmin.cn/n/1385614.html

相关文章

DarkNet网络结构

一、darknet53网络结构图 文字版&#xff1a;卷积(下采样卷积1残差块)(下采样卷积2残差块)(下采样卷积8残差块)(下采样卷积8残差块)(下采样卷积4*残差块) 不难看出&#xff0c;darknet53就是重复堆叠下采样卷积n*残差块(n为残差块的个数)这个结构而组成的。而更基本的结构就是…

Web开发要做好浏览器兼容谈何容易?

浏览器兼容虽说是web开发的基本要求,但是要做到完全兼容各种浏览器谈何容易?对于开发和设计都由程序员兼着的小公司的信息部门来说,更是雪上加霜。就连京东商城&#xff0c;包括百度做出了的东西&#xff0c;也都很难保证主流浏览器的完全兼容。其中最典型的是京东&#xff0c…

windows系统通过CMD将文件copy到远程电脑

在需要上传文件的电脑上使用管理员权限运行cmd&#xff0c;输入runas /user:administrator cmd 回车net share IPC$ net use \\IP地址\ipc$ password /user:username xcopy note.ejs \\IP地址\C$\clothes\views /Y net use \\IP地址\ipc$ /delete转载于:https://www.cnblogs.co…

Extjs中FieldSet的收缩和展开实例

Extjs中FieldSet的收缩和展开实例: FieldSet表单控件属于Ext.form.FieldSet的类&#xff0c;继承自&#xff1a;Ext.Panel&#xff0c;表示对某一组字段的标准容器&#xff0c;其中最主要的一个功能就是收缩和展开收缩与展开demo&#xff1a; items: [id:check_email_hacklog_s…

简单的dp加贪心

题目链接&#xff1a;传送门 这个题目让我纠结了好久&#xff0c;之后恍然大悟是求最长的递减序列&#xff0c;并加上贪心的算法&#xff0c;如果有大于两个的发射系统&#xff0c;应该判断使导弹的高度与此时个个发射系统的高度比较&#xff0c;选取高度差最小的去执行这次的拦…

python文件目录下的__init__文件

一、声明包 python 中的项目结构是按照目录来组织的&#xff0c;每个python 文件就是一个模块&#xff0c;将模块整合在一起就是包&#xff0c;也就是把服务于某个功能的一系列模块放在一个目录中&#xff0c;这样如果想要使用某个包中的某个功能&#xff0c;只需要导入相应包中…

DBunit、Spring TestContext实践

1、定义接口UserDao.java package com.bao.dbunit.dao;import com.bao.dbunit.entity.User;public interface UserDao {public User getUserByNick(String nick);public void save(User user);public void update(User user);public void remove(String nick);}Pojo类&#xff…

微信公众平台开发(105) 分享到朋友圈和发送给好友

<script type"text/javascript">function onBridgeReady() {var mainTitle"华章书院",mainDesc"2014最受企业家喜爱的商业图书评选",mainURL"http://hz.huiyiw.org/hzshuyuan/home/index.php",mainImgUrl "http://hz.huiyi…