当前位置: 首页 > news >正文

外贸网站怎么注册免认证域名注册

外贸网站怎么注册,免认证域名注册,爱企业 查询,通信管理局 网站备案目录 重点整理 054、 拼数 题目描述 输入格式 输出格式 输入输出样例 核心思路 代码 055、 求第k小的数 题目描述 输入格式 输出格式 输入输出样例 核心思路 代码 总结 这几天我们主要刷了洛谷上排序算法对应的一些题目,相对来说比较简单 一共是13道…

目录

重点整理

054、 拼数

题目描述

输入格式

输出格式

输入输出样例

核心思路

代码

055、 求第k小的数

题目描述

输入格式

输出格式

输入输出样例

核心思路

代码

总结


这几天我们主要刷了洛谷上排序算法对应的一些题目,相对来说比较简单

一共是13道题,对应我暑假刷题的043--055。当然这些题目相对来说比较简单,我们挑着重点的说。

重点整理

排序这一块的题目总体来看包括,

1. 基本的排序算法,像快速排序、分治排序,这些知识点我写了专门的博客,欢迎大家阅读

快速排序、归并排序

2. 结构题的多因素、自定义排序规则。Java实现自定义排序

3. 特殊问题

针对这个特殊问题,我们就题目来说

054、 拼数

题目描述

设有 nn 个正整数 a1…ana1​…an​,将它们联接成一排,相邻数字首尾相接,组成一个最大的整数。

输入格式

第一行有一个整数,表示数字个数 nn。

第二行有 nn 个整数,表示给出的 nn 个整数 aiai​。

输出格式

一个正整数,表示最大的整数

输入输出样例

输入 #1复制

3
13 312 343

输出 #1复制

34331213

输入 #2复制

4
7 13 4 246

输出 #2复制对于

7424613

核心思路

本质来看还是一个自定义排序规则,但是这个题巧妙之处就是自定义的排序规则是如何确定的。对于两个字符串,如果将比较规则定义为大的放前面,那对于 321,32,这个例子来说的话,大的放前面那就是32132,但是32321要更大。所以简单的大的放前面是不合适的。

如果我们把比较规则定义为 a+b大于b+a,那么a在前面,反之b在前面。这样就避免了这个问题。

代码

import java.util.*;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();String s[] = new String[n];for (int i = 0; i < n; i++) {s[i] = sc.next();}Arrays.sort(s,new Comparator<String>() {public int compare(String o1, String o2) {return (o2+o1).compareTo(o1+o2);}});for (int i = 0; i < n; i++) {System.out.print(s[i]);}}
}

055、 求第k小的数

题目描述

输入 nn(1≤n<50000001≤n<5000000 且 nn 为奇数)个数字 aiai​(1≤ai<1091≤ai​<109),输出这些数字的第 kk 小的数。最小的数是第 00 小。

请尽量不要使用 nth_element 来写本题,因为本题的重点在于练习分治算法。

输入格式

输出格式

输入输出样例

输入 #1复制

5 1
4 3 2 1 5

输出 #1复制

2

核心思路

这个题看起来并没有什么难度,但是题目给的样例卡时间,最后两个数据量太大,经典的快排和归并都会超时间。

我们回顾一下快排的思路,确定枢轴的过程是实质上就是把这个元素放到其排序后的正确位置上去,其实就是把第k小的数放在下标为k的位置上,根据这个思路我们可以在快排的代码上做优化。

我们在快排的基础上,确定好枢轴位置后,判断该位置是否是k,是的话直接结束程序,不是的话继续往后,为了节约时间,我们只排序k所在的那个区间。

代码

#include <iostream>  
#include <vector>  
using namespace std;  const int N=5e6 +10;int nums[N];
void quickSort(int left, int right, int k) {  // 判断排序区间长度  if (right <= left) {  if (right == left && left == k) {  cout << nums[k] << endl;  exit(0);  }  return;  }  // 选择基准值(这里使用最左边的值)  int pivot = nums[left];  int i = left, j = right;  while (i < j) {  // 从右向左找到第一个小于等于pivot的元素  while (nums[j] >= pivot && i < j) j--;  // 交换  if (i < j) nums[i++] = nums[j];  // 从左向右找到第一个大于pivot的元素  while (nums[i] <= pivot && i < j) i++;  if (i < j) nums[j--] = nums[i];  }  nums[i] = pivot;  // 判断基准值是否为目标位置  if (i == k) {  cout << nums[k] << endl;  exit(0);  }  // 递归排序  if (k < i) quickSort(left, i - 1, k);  if (k > i) quickSort(i + 1, right, k);  
}  int main() {  int n, k;  cin >> n >> k;  for (int i = 0; i < n; i++) {  scanf("%d",&nums[i]);  }  quickSort( 0, n - 1, k); return 0;  
}

总结

排序还是非常博大精深的,希望在后续的学习中不断精进!

http://www.yayakq.cn/news/476786/

相关文章:

  • 代刷网站是怎么做的个人怎么创建微信公众号
  • 上海建设网站是多少win7一键优化工具
  • 呼家楼街道网站建设中国服装设计网站
  • 网站建设怎么用郑州网站优化的微博_腾讯微博
  • seo与网站建设的关联wordpress 文艺小清新
  • 外国网站建设做海外网站的公司
  • 网站要挂工商标识怎么做app制作平台神医嫡女漫画
  • 网站如何做原创美食网站怎么做
  • 东莞网站建设 手机壳兴化网页定制
  • 网站开发语言作用网站建设公司能力要求
  • 电子商务网站建设的目的和作用福田瑞沃售后服务电话
  • 织梦 做网站 知乎无锡模板网站建设找哪个好
  • 无锡公共工程建设中心网站网站正在建设中模板下载
  • 专用车网站建设多少钱网站建设和管理制度
  • vs2017 网站开发环境网站建设应该计入什么费用
  • 昌邑市建设局网站吉林城市建设学校网站
  • 网站右边跳出的广告怎么做南京广告公司装修
  • 做房产网站不备案可以吗织梦网站建设网页
  • 郑州有哪些搞网站开发的公司网站建设有哪几种
  • 动漫新闻资讯站企业解决方案公司
  • 西安网站推广方案网站中的搜索框图标怎么做的
  • linux wordpress 建站教程百度网站后台管理系统
  • 个人备案 网站简介怎么写做网站用商标吗
  • 上虞建设银行官网站wordpress数据库优化插件
  • 自己怎么给网站做优化排名做彩票网站需要什么收钱的
  • 网站建设科技公司昆明百度小程序
  • 手机怎么搭建网站源码搭建一个网站花多少钱
  • 网站建设合同怎么写百度竞价推广专员
  • 工程建设造价全过程监督网站二级建造师考试科目
  • 公路建设项目可行性研究报告编制办法哪个网站查最新版泰安考试信息网官网