lintcode:整数排序||

题目

给一组整数,按照升序排序。使用归并排序,快速排序,堆排序或者任何其他 O(n log n) 的排序算法。

解题

归并排序

public class Solution {
    /**
     * @param A an integer array
     * @return void
     */
    public void sortIntegers2(int[] A) {
        // Write your code here
        if(A==null || A.length <=1)
            return;
        int low = 0;
        int high = A.length - 1;
        mergeSort(A,low,high);

    }
    public void mergeSort(int[] A,int low ,int high){
        if(low>=high)
            return;
        int mid = low + (high - low)/2;
        mergeSort(A,low,mid);
        mergeSort(A,mid+1,high);
        merge(A,low,mid,high);

    }
    public void merge(int[] A,int low,int mid,int high){
        int len = high - low + 1;
        int[] C = new int[len];
        int i = low;
        int j = mid + 1;
        int k = 0;
        while(i<=mid && j<= high){
            if(A[i]>A[j]){
                C[k++] = A[j];
                j++;
            }else{
                C[k++] = A[i];
                i++;
            }
        }
        while(i<=mid){
            C[k++] = A[i];
            i++;
        }
        while(j<=high){
            C[k++] = A[j];
            j++;
        }
        for(k=0;k<len;k++){
            A[low+k] = C[k];
        }
    }
}
时间: 2024-11-07 23:48:49

lintcode:整数排序||的相关文章

LintCode 整数排序

题目:给一组整数,按照升序排序,使用选择排序,冒泡排序,插入排序或者任何 O(n2) 的排序算法. 1.冒泡:从头开始,比较相邻的两个元素,大的放在后面.一轮结束之后,最大的数沉底,不参与下一轮比较.重复 直至待排序的元素个数为1. class Solution { public: /*** @param A an integer array @return void*/ void sortIntegers(vector<int>& A) {                     

C/C++算法竞赛入门经典Page11 例题1-5 三整数排序

题目:输入3个整数,从小到大排序后输出 样例输入: 20 7 33 样例输出: 7 20 33 首先,先声明三个整数a,b,c和一个临时变量t: int a,b,c,t;//1,b,c为三个整数,t为临时变量 输入三个整数: scanf("%d%d%d",&a,&b,&c); 进行3次if判断: 1.如果b>a,则a,b对调 2.如果c>a,则a,c对调 3.如果c>b,则b,c对调 代码: if(b>=a){ t=b; b=a; a=t

sort()使整数排序

sort()方法可将数组升序排序,但它是把数组的值转化为字符串后在排序的, 如 var a = [1,12,3,8,123] a.sort()  结果 1,12,123,3,8 和我们想要的结果不一样,解决方法, function compare(value1, value2) { return value1 - value2; } var values = [1,12,3,8,123]; values.sort(compare); alert(values); //1,3,8,12,123 如

1487 大批整数排序

个人博客:doubleq.win 1487 大批整数排序 时间限制: 3 s 空间限制: 16000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description !!!CodeVS开发者有话说: codevs自从换了评测机,新评测机的内存计算机制发生变化 计算内存的时候会包括栈空间 swap空间 这题的2M是单指内存空间... 十分十分抱歉 抱歉 !!! 现在有一大批(总数不超过10000000个)1到10之间的整数,现在请你从小到大进行排序输出. (测试数据将超过11MB.)

[华为上机练习题]6.整数排序

题目 描述: 实现输入一组大于等于0的整数,根据从小到大的顺序排序后输出,排序后有连续数时,只输出连续数中最小和最大的两个数. 题目类别: 排序 难度: 高级 运行时间限制: 10Sec 内存限制: 128MByte 阶段: 入职前练习 输入: 一组大于等于0的整数,不考虑非法输入,各个整数之间以逗号(",")分隔, 输入字符串的总长度小于等于100个字节. 输出: 排序后的值,各个整数之间以空格分隔. 样例输入: 1,4,3,110,2,90,7 样例输出: 1 4 7 90 110

codeup-大整数排序

Problem E: 大整数排序 Time Limit: 1 Sec  Memory Limit: 32 MBSubmit: 433  Solved: 198[Submit][Status][Web Board][Creator:Imported] Description 对N个长度最长可达到1000的数进行排序. Input 输入第一行为一个整数N,(1<=N<=100).接下来的N行每行有一个数,数的长度范围为1<=len<=1000.每个数都是一个正数,并且保证不包含前缀零.

[LintCode] Sort Integers 整数排序

Given an integer array, sort it in ascending order. Use selection sort, bubble sort, insertion sort or any O(n2) algorithm. Example Given [3, 2, 1, 4, 5], return [1, 2, 3, 4, 5]. 这道题让我们实现最基本的几个O(n2)的排序算法,选择排序,冒泡排序和插入排序,都是最基本的排序算法.我们一个一个来看,首先来看冒泡排序,算法

[LintCode] Sort Integers II 整数排序之二

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]. 解法一: // Quick sort class Solution { public: /** * @param A an integer array *

464 整数排序Ⅱ

原题网址:https://www.lintcode.com/problem/sort-integers-ii/description 描述 给一组整数,按照升序排序.使用归并排序,快速排序,堆排序或者任何其他 O(n log n) 的排序算法. 您在真实的面试中是否遇到过这个题?  是 样例 给出 [3, 2, 1, 4, 5], 排序后的结果为 [1, 2, 3, 4, 5]. 标签 排序 快速排序 归并排序 思路1:用快排序,挖坑填数+分治法(递归). 参考:白话经典算法系列之六 快速排序