美文网首页
第3章 排序的使用

第3章 排序的使用

作者: 得力小泡泡 | 来源:发表于2020-03-29 22:24 被阅读0次

1、分数线

算法分析

二分

  • check(x):表示用x表示获奖分数,获奖人数是否大于等于参赛总人数,取左边区域的最大值

时间复杂度 O(nlogn)

Java 代码

import java.util.Scanner;

public class Main{
    static int N = 100010;
    static int n;
    static int[] a = new int[N];
    static boolean check(int x)
    {
        int res = 0;
        for(int i = 0;i < n;i ++)
            if(a[i] >= x) res ++;
        
        return res >= (n + 1 >> 1);
    }
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        n = scan.nextInt();
        for(int i = 0;i < n;i ++) a[i] = scan.nextInt();
        int l = 0,r = 100;
        while(l < r)
        {
            int mid = l + r + 1 >> 1;
            if(check(mid)) l = mid ;
            else r = mid - 1;
        }
        int cnt = 0;
        for(int i = 0;i < n;i ++) 
            if(a[i] >= l)
                cnt ++;
        System.out.println(l + " " + cnt);
        
    }
}

2、红蓝绿

算法分析

  • 1、先对数组进行排序,输出
  • 2、res表示最多能组成的幸福串,res = min(numB / 3, numG / 2,numR)

时间复杂度 O(nlogn)

Java 代码

import java.util.Arrays;
import java.util.Scanner;

public class Main{
    
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        char[] temp = scan.next().toCharArray();
        int len = temp.length;
        Arrays.sort(temp,0,len);
        System.out.println(String.valueOf(temp));
        
        int numB = 0;
        int numG = 0;
        int numR = 0;
        for(int i = 0;i < len;i ++) 
        {
            if(temp[i] == 'B') numB ++;
            if(temp[i] == 'G') numG ++;
            if(temp[i] == 'R') numR ++;
        }
        int res = Math.min(numB / 3, numG / 2);
        res = Math.min(res, numR);
        System.out.println(res);
    }
}

3、交叉排序

算法分析

暴力操作

时间复杂度O(nlogn)

Java代码

import java.util.Arrays;
import java.util.Scanner;

public class Main{
    static int N = 100010;
    static int[] a = new int[N];
    static int[] tmp = new int[N];
    public static void main(String[] args) {
       Scanner scan = new Scanner(System.in);
       int n = scan.nextInt();
       int l1 = scan.nextInt();
       int r1 = scan.nextInt();
       int l2 = scan.nextInt();
       int r2 = scan.nextInt();
       for(int i = 1;i <= n;i ++) a[i] = scan.nextInt();
       
       Arrays.sort(a,l1,r1 + 1);
       
       for(int i = l2;i <= r2;i ++) tmp[i] = a[i];
       Arrays.sort(tmp,l2,r2 + 1);
       
       for(int i = r2,j = l2;i >= l2;i --,j ++)
            a[j] = tmp[i];
       
       for(int i = 1;i <= n;i ++) 
       {
           if(i != n) System.out.print(a[i] + " ");
           else System.out.println(a[i]);
       }
     }
}

4、前k名的平均数

算法分析

先排序,在找前k名的平均数

时间复杂度 O(nlogn)

Java 代码

import java.util.Arrays;
import java.util.Scanner;

public class Main{
    static int N = 35;
    static int[] a = new int[N];
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        for(int i = 0;i < n;i ++) a[i] = scan.nextInt();
        int k = scan.nextInt();
        Arrays.sort(a,0,n);
        double sum = 0;
        for(int i = n - 1,j = 0;j != k;i --,j ++)
        {
            sum += a[i];
        }
        System.out.printf("%.2f",sum / k);
    }
}

相关文章

  • 常见排序算法

    这里介绍四种排序算法,选择排序、快速排序、归并排序、计数排序 选择排序(使用递归) 选择排序(使用循环) 快速排序...

  • 排序问句

    彼岸焦点分享第63天(2018.8.31) 需要排序的三个方面:目标、资源、心动方案。排序技术一般结合评量问句使用...

  • mysql调优之索引——ORDER BY(GROUP BY)

    order by的排序优化 1、ORDER BY 子句尽量使用index方式排序,避免使用filesort方式排序...

  • 找第k 大的数

    题解: 找第 K 大数,基于比较的排序的方法时间复杂度为 O(n),数组元素无区间限定,故无法使用线性排序。 由于...

  • 第3章 排序的使用

    1、分数线 算法分析 二分 check(x):表示用x表示获奖分数,获奖人数是否大于等于参赛总人数,取左边区域的最...

  • 排序算法(八)计数排序

    计数排序是一种稳定的线性时间排序算法,原理是使用一个额外的数组,其中第i个元素是待排序数组中值等于i的元素的个数。...

  • LeetCode 分类刷题——Sort

    Sort 的 Tips: 深刻的理解多路快排。第 75 题。 链表的排序,插入排序(第 147 题)和归并排序(第...

  • 算法

    算法和数据结构 十大排序实现原理?使用场景js中sort使用的是哪种排序?sort使用的是插入排序和快速排序结合的...

  • Golang 排序

    215. 数组中的第K个最大元素 1、使用sort源码 2、冒泡排序 3、选择排序 对比n后面所有数,将最大的和n...

  • 基本排序算法

    选择排序 插入排序 冒泡排序 中 sort 函数使用

网友评论

      本文标题:第3章 排序的使用

      本文链接:https://www.haomeiwen.com/subject/zqaluhtx.html