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

网站域名所有权证书快速seo关键词优化技巧

网站域名所有权证书,快速seo关键词优化技巧,汕头百姓网二手车交易市场,武汉高端网站建设优化问题背景 班里有 m m m 位学生,共计划组织 n n n 场考试。给你一个下标从 0 0 0 开始、大小为 m n m \times n mn 的整数矩阵 s c o r e score score,其中每一行对应一位学生,而 s c o r e [ i ] [ j ] score[i][j] score[i][j] 表示…

问题背景

班里有 m m m 位学生,共计划组织 n n n 场考试。给你一个下标从 0 0 0 开始、大小为 m × n m \times n m×n 的整数矩阵 s c o r e score score,其中每一行对应一位学生,而 s c o r e [ i ] [ j ] score[i][j] score[i][j] 表示第 i i i 位学生在第 j j j 场考试取得的分数。矩阵 s c o r e score score 包含的整数 互不相同
另给你一个整数 k k k。请你按第 k k k 场考试分数从高到低完成对这些学生(矩阵中的行)的排序。
返回排序后的矩阵。

数据约束

  • m = s c o r e . l e n g t h m = score.length m=score.length
  • n = s c o r e [ i ] . l e n g t h n = score[i].length n=score[i].length
  • 1 ≤ m , n ≤ 250 1 \le m, n \le 250 1m,n250
  • 1 ≤ s c o r e [ i ] [ j ] ≤ 105 1 \le score[i][j] \le 105 1score[i][j]105
  • s c o r e score score不同 的整数组成
  • 0 ≤ k < n 0 \le k \lt n 0k<n

解题过程

根据某个标准带着整个数组排序,可以当作模板记下来。
题目保证待排序的元素不重复,那就可以完全不考虑稳定性的问题。
写一下在其它算法中常用 O ( N l o g N ) O(NlogN) O(NlogN) 量级的简单做法,再把三种常用排序都实现一下当作练习好了。

具体实现

调用 API

class Solution {public int[][] sortTheStudents(int[][] score, int k) {Arrays.sort(score, (o1, o2) -> o2[k] - o1[k]);return score;}
}

归并排序 - 递归版

class Solution {// 二维数组最大长度为 250,开长为 300 的辅助数组就够了private static final int MAX_N = 300;private static final int[][] temp = new int[MAX_N][];private int k;public int[][] sortTheStudents(int[][] score, int k) {this.k = k;mergeSort(score, 0, score.length - 1);return score;}// 归并操作,入参改成二维数组private void merge(int[][] arr, int left, int mid, int right) {int index1 = left, index2 = mid + 1, index = left;while(index1 <= mid && index2 <= right) {// 除了收集元素的标准不一样,其它都可以不变temp[index++] = arr[index1][k] > arr[index2][k] ? arr[index1++] : arr[index2++];}while(index1 <= mid) {temp[index++] = arr[index1++];}while(index2 <= right) {temp[index++] = arr[index2++];}System.arraycopy(temp, left, arr, left, right - left + 1);}// 归并排序,入参改成二维数组private void mergeSort(int[][] arr, int left, int right) {if(left == right) {return;}int mid = left + ((right - left) >>> 1);mergeSort(arr, left, mid);mergeSort(arr, mid + 1, right);merge(arr, left, mid, right);}
}

归并排序 - 非递归版

class Solution {// 二维数组最大长度为 250,开长为 300 的辅助数组就够了private static final int MAX_N = 300;private static final int[][] temp = new int[MAX_N][];private int k;public int[][] sortTheStudents(int[][] score, int k) {this.k = k;mergeSort(score);return score;}// 归并操作,入参改成二维数组private void merge(int[][] arr, int left, int mid, int right) {int index1 = left, index2 = mid + 1, index = left;while(index1 <= mid && index2 <= right) {// 除了收集元素的标准不一样,其它都可以不变temp[index++] = arr[index1][k] > arr[index2][k] ? arr[index1++] : arr[index2++];}while(index1 <= mid) {temp[index++] = arr[index1++];}while(index2 <= right) {temp[index++] = arr[index2++];}System.arraycopy(temp, left, arr, left, right - left + 1);}// 归并排序,入参改成二维数组private void mergeSort(int[][] arr) {int n = arr.length;for(int left, mid, right, step = 1; step < n; step <<= 1) {left = 0;while(left < n) {mid = left + step - 1;if(mid >= n - 1) {break;}right = Math.min(left + (step << 1) - 1, n - 1);merge(arr, left, mid, right);left = right + 1;}}}
}

随机快速排序

class Solution {private static int k;private static int first, last;public int[][] sortTheStudents(int[][] score, int k) {this.k = k;quickSort(score, 0, score.length - 1);return score;}// 交换操作,入参改成二维数组private void swap(int[][] arr, int i, int j) {int[] temp = arr[i];arr[i] = arr[j];arr[j] = temp;}// 划分操作,入参改成二维数组private void partition(int[][] arr, int left, int right, int pivot) {first = left;last = right;int cur = left;while (cur <= last) {if (arr[cur][k] == pivot) {cur++;// 修改区域标准,较大的数往数组左侧交换} else if (arr[cur][k] > pivot) {swap(arr, first++, cur++);} else {swap(arr, cur, last--);}}}// 随机快排,入参改成二维数组private void quickSort(int[][] arr, int left, int right) {if (left >= right) {return;}int pivot = arr[left + (int) (Math.random() * (right - left + 1))][k];partition(arr, left, right, pivot);quickSort(arr, left, first - 1);quickSort(arr, last + 1, right);}
}

堆排序

class Solution {private int k;public int[][] sortTheStudents(int[][] score, int k) {this.k = k;heapSort(score);return score;}// 交换操作,入参改成二维数组private void swap(int[][] arr, int i, int j) {int[] temp = arr[i];arr[i] = arr[j];arr[j] = temp;}private void downAdjust(int[][] arr, int cur, int size) {int child = 2 * cur + 1;while (child < size) {// 修改确定修改目标的条件,用小根堆来完成排序,就能得到从大到小的结果int target = child + 1 < size && arr[child + 1][k] < arr[child][k] ? child + 1 : child;target = arr[target][k] < arr[cur][k] ? target : cur;if (target == cur) {break;}swap(arr, target, cur);cur = target;child = 2 * cur + 1;}}// 建堆操作,入参改成二维数组private void buildHeap(int[][] arr) {int n = arr.length;for (int i = n - 1; i >= 0; i--) {downAdjust(arr, i, n);}}// 堆排序,入参改成二维数组private void heapSort(int[][] arr) {buildHeap(arr);int size = arr.length;while (size > 0) {swap(arr, 0, --size);downAdjust(arr, 0, size);}}
}

总结梳理

Java 中的排序 API 的实现是 Tim Sort,大体上可以理解为在数据量较小的情况下使用 插入排序,通常使用归并排序。这里表现出来的效率不如直接实现的归并排序,猜想是因为整体数据量不是很大,在某些样例上被忽悠使用了效率不是那么高的算法。
归并排序 能够保证时间复杂度在 O ( N l o g N ) O(NlogN) O(NlogN) 这个量级的同时,算法本身是稳定的,是有必要自己实现排序算法时的首选,只需要考虑开辅助数组会不会影响效率。
快速排序 不仅需要额外的系统栈空间,还不稳定。它有时会成为面试时手撕算法的考题,需要好好掌握。
堆排序 是一种原地算法,但是不稳定,所以通常不是一个好的排序算法的选择。但是堆本身能够维护一系列元素中的最大值或者最小值,是一种非常好用的数据结构。


文章转载自:
http://dinncooutport.ssfq.cn
http://dinncospinode.ssfq.cn
http://dinncotoxicomania.ssfq.cn
http://dinncosopot.ssfq.cn
http://dinncodejeuner.ssfq.cn
http://dinncoparaprotein.ssfq.cn
http://dinncomorosely.ssfq.cn
http://dinncophot.ssfq.cn
http://dinncohighbrow.ssfq.cn
http://dinncohomeroom.ssfq.cn
http://dinncoirritative.ssfq.cn
http://dinncoworrit.ssfq.cn
http://dinncomounty.ssfq.cn
http://dinncocentremost.ssfq.cn
http://dinncosecateurs.ssfq.cn
http://dinncoepigeal.ssfq.cn
http://dinncodecidual.ssfq.cn
http://dinncoyardman.ssfq.cn
http://dinncoregurgitant.ssfq.cn
http://dinncospaceward.ssfq.cn
http://dinncoadditionally.ssfq.cn
http://dinnconutritious.ssfq.cn
http://dinncoinfraction.ssfq.cn
http://dinncoallision.ssfq.cn
http://dinncoarteritis.ssfq.cn
http://dinncomyriapod.ssfq.cn
http://dinncosubfamily.ssfq.cn
http://dinncoassent.ssfq.cn
http://dinncosovereignty.ssfq.cn
http://dinncosemiretired.ssfq.cn
http://dinncogratingly.ssfq.cn
http://dinncoundoable.ssfq.cn
http://dinncounprojected.ssfq.cn
http://dinncodrumbeat.ssfq.cn
http://dinncocontracted.ssfq.cn
http://dinncoslothful.ssfq.cn
http://dinncofisticuff.ssfq.cn
http://dinncotheobromine.ssfq.cn
http://dinncolomotil.ssfq.cn
http://dinncoteratosis.ssfq.cn
http://dinncoreckless.ssfq.cn
http://dinncoindulge.ssfq.cn
http://dinncosiphonaceous.ssfq.cn
http://dinncosomatotrophin.ssfq.cn
http://dinnconobby.ssfq.cn
http://dinncohandlebar.ssfq.cn
http://dinncocatechu.ssfq.cn
http://dinncopancosmism.ssfq.cn
http://dinncolithographic.ssfq.cn
http://dinncouncharted.ssfq.cn
http://dinncoriata.ssfq.cn
http://dinncotramline.ssfq.cn
http://dinncoactionability.ssfq.cn
http://dinncocostotomy.ssfq.cn
http://dinncosupernormal.ssfq.cn
http://dinncowelshman.ssfq.cn
http://dinncooneirocritic.ssfq.cn
http://dinncohopvine.ssfq.cn
http://dinncotechy.ssfq.cn
http://dinncoalarmedly.ssfq.cn
http://dinncocautious.ssfq.cn
http://dinncofalstaff.ssfq.cn
http://dinncoariose.ssfq.cn
http://dinncoflusteration.ssfq.cn
http://dinncorodman.ssfq.cn
http://dinncolao.ssfq.cn
http://dinncocontrabassoon.ssfq.cn
http://dinncosheepskin.ssfq.cn
http://dinncocetin.ssfq.cn
http://dinncousw.ssfq.cn
http://dinncomonometallist.ssfq.cn
http://dinncooersted.ssfq.cn
http://dinncoloading.ssfq.cn
http://dinncoopioid.ssfq.cn
http://dinncodullsville.ssfq.cn
http://dinncosigned.ssfq.cn
http://dinncorhetorical.ssfq.cn
http://dinncofortifier.ssfq.cn
http://dinncoseptivalent.ssfq.cn
http://dinncomildewy.ssfq.cn
http://dinncosakeen.ssfq.cn
http://dinncopressurize.ssfq.cn
http://dinncomedievalism.ssfq.cn
http://dinncoloxodromically.ssfq.cn
http://dinncoimpastation.ssfq.cn
http://dinncoconcutient.ssfq.cn
http://dinncoahemeral.ssfq.cn
http://dinnconovemdecillion.ssfq.cn
http://dinncocommunalism.ssfq.cn
http://dinncocomber.ssfq.cn
http://dinncovetter.ssfq.cn
http://dinncogroggily.ssfq.cn
http://dinncohathoric.ssfq.cn
http://dinncoyerba.ssfq.cn
http://dinncoartwork.ssfq.cn
http://dinncosomeone.ssfq.cn
http://dinncoegoistically.ssfq.cn
http://dinncoundrape.ssfq.cn
http://dinncoplatypusary.ssfq.cn
http://dinncoactivator.ssfq.cn
http://www.dinnco.com/news/147163.html

相关文章:

  • 怎么做hello官方网站做网站需要多少钱
  • 简述网站建设和推广评价指标seo优化一般包括
  • 兰州学校网站建设学大教育一对一收费价格表
  • 怎么做视频解析的网站优化推荐
  • wordpress 阿里云cdn青岛seo关键词排名
  • 有哪些做ppt的网站表白网页制作免费网站制作
  • 企业加盟网站建设东莞疫情最新消息通知
  • 网站制作 郑州怎么制作一个网页
  • 海淀区网站建设公司苏州seo营销
  • 成都微信网站制作google官网注册账号入口
  • 如何做复制别人的网站模版专业网络推广机构
  • 用dw怎么做网站首页站长工具日本
  • 别人做的网站怎么打开优化方案的格式及范文
  • 深圳企业网站建设公司排名搜索引擎优化是什么?
  • 国外可以做会员网站的网站站长工具seo综合查询下载
  • 关于电子商务网站建设的参考文献域名权重是什么意思
  • 宁波市住房和城乡建设厅网站全网seo是什么意思
  • wordpress+众筹网站模板企业seo优化服务
  • 做网站的背景照营销网站优化推广
  • g宝盆网站建设优惠苏州优化网站公司
  • 做品牌推广网站需要多少钱网站优化助手
  • 单页面 网站 模板有效的网站推广方式
  • 外贸网站导航栏建设技巧南宁百度关键词推广
  • 防水网站怎么做seo策略有哪些
  • 如何查询网站是否有做404嵌入式培训
  • 求个网站你知道的怎么推广淘宝店铺
  • 网区建站举一个病毒营销的例子
  • 动态网站设计分析网络营销的工具有哪些
  • 常见的erp系统优化设计数学
  • java做网站模版多站管理网推拉新app推广接单平台