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

做国际网站怎么能快速打开苏州网站开发公司

做国际网站怎么能快速打开,苏州网站开发公司,找做网站的公司,人大门户网站建设情况【数据结构学习笔记】选择排序 参考电子书:排序算法精讲 算法原理 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元…

【数据结构学习笔记】选择排序

参考电子书:排序算法精讲

算法原理

首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕

const nums = [1, 4, 6, 2, 0];let minIndex;
for (let i = 0; i < nums.length; i++) {minIndex = i;for (let j = i + 1; j < nums.length; j++) {if (nums[j] < nums[minIndex]) {minIndex = j;}}const temp = nums[i];nums[i] = nums[minIndex];nums[minIndex] = temp;
}
  • 时间复杂度:O(n^2)
  • 空间复杂度:O(1)

优化方式

  • 当 i = nums.length - 1 时,j = nums.length 直接跳出循环,因此可以跳过
const nums = [1, 4, 6, 2, 0];let minIndex;
for (let i = 0; i < nums.length - 1; i++) {minIndex = i;for (let j = i + 1; j < nums.length; j++) {if (nums[j] < nums[minIndex]) {minIndex = j;}}const temp = nums[i];nums[i] = nums[minIndex];nums[minIndex] = temp;
}
  • 如果 minIndex 没有变就跳过交换
const nums = [1, 4, 6, 2, 0];let minIndex;
let swapped;
for (let i = 0; i < nums.length; i++) {minIndex = i;swapped = false;for (let j = i + 1; j < nums.length - i; j++) {if (nums[j] < nums[minIndex]) {minIndex = j;swapped = true;}}if (!swapped) continue;const temp = nums[i];nums[i] = nums[minIndex];nums[minIndex] = temp;
}
  • 记录最小值的同时记录最大值,在排序到中间部分就会有序
const nums = [1, 4, 6, 2, 0];let minIndex;
let maxIndex;
let swapped;
for (let i = 0; i < nums.length; i++) {minIndex = i;maxIndex = i;swapped = false;for (let j = i + 1; j < nums.length - i; j++) {if (nums[j] < nums[minIndex]) {minIndex = j;swapped = true;}if (nums[j] > nums[maxIndex]) {maxIndex = j;swapped = true;}}if (!swapped) continue;const temp = nums[i];nums[i] = nums[minIndex];nums[minIndex] = temp;if (maxIndex === i) maxIndex = minIndex;temp = nums[nums.length - 1 - i];nums[nums.length - 1 - i] = nums[maxIndex];nums[maxIndex] = temp;
}

相关例题

LC 215.数组中的第 k 个最大元素

给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。
请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。

/*** @param {number[]} nums* @param {number} k* @return {number}*/
var findKthLargest = function(nums, k) {let maxIndex;let maxIndexes = [];while(k-- > 0) {maxIndex = -1;for (let i = 0; i < nums.length; i++) {if (maxIndexes.includes(i)) continue;if (maxIndex === -1) {maxIndex = i;continue;}if (nums[i] > nums[maxIndex]) {maxIndex = i;}}maxIndexes.push(maxIndex);}return nums[maxIndexes[maxIndexes.length - 1]];
};

受限于 Leetcode 更新了测试用例,此题用选择排序会出现超时,但是算法思想不变即可

http://www.rdtb.cn/news/18593.html

相关文章:

  • 网站编辑信息怎么做工具seo
  • 免费制作网站的基本流程竞价账户托管公司
  • 腾龙时时彩做号网站大数据精准营销案例
  • 网站除了做流量还需要什么软件重庆seo职位
  • 洛阳公司做网站seo技术最新黑帽
  • 品牌网站建设方案湖南网站seo找行者seo
  • 网站日历代码爱站网站seo查询工具
  • php网站301重定向刚刚刚刚刚刚刚刚刚刚刚刚刚刚
  • 网站开发相关的教材书籍北京网站优化方案
  • 建站属于什么行业网络热词作文
  • 济南 规划 网站网站seo优化检测
  • 绿色食品网站开发步骤成都网络推广优化
  • 贵州有哪些公司做网站做得好seo网站优化软件价格
  • 色盲测试搜索引擎优化的英文
  • 树形结构网站案例推广软文
  • maka怎么做钓鱼网站如何搭建一个自己的网站
  • 物流网站首页设计产品推广计划方案模板
  • 做网站和APP需要多少钱武汉seo优化服务
  • 网站视频怎么做百度账号申诉
  • 那个啥的网站推荐下平台开发
  • 做网站做app区别交换链接平台
  • 怎么把网站做seo到首页自己怎么制作一个网站
  • 自己可以做门户网站吗免费制作永久个人网站
  • 做网站拍幕布照是什么意思网站搭建需要多少钱
  • 杭州网站改版郑州网络营销哪个好
  • 和狗做的网站好百度首页优化
  • 定制网络监控方案网络推广优化服务
  • 温州做网站费用青岛seo推广
  • 售后服务规范网站建设百度seo公司兴田德润
  • 下载简历模板免费网络营销seo培训