当前位置: 首页 > 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.yayakq.cn/news/705150/

相关文章:

  • 校园网站建设教程视频网站建设概念
  • 衡水建设局网站首页网页开发者工具怎么用
  • 文具网站建设规划书网站建设招聘要求
  • 长沙企业模板建站一些大型网站的服务器需要租用多大的带宽
  • 网站还是app什么网站合适做流量
  • wordpress可以做电影站北京seo优化推广
  • 中企动力网站建设合同湖南工程建设监理有限公司网站
  • 邯郸企业网站制作建设网站备案号 英文
  • 多语言外贸网站wordpress 变形
  • 网站建设的费用是多少做网站用什么前端框架
  • wordpress网站编辑seo怎么收费的
  • 推荐网站空间购买微信网站制作
  • 青春网站建设工作室重庆vr制作
  • 做旅游网站的需求分析哪里做网站需求
  • 六安网站建设定制深圳品牌公寓
  • 怎么开通微信公众号淘宝seo推广优化
  • 常州网站建设团队网站开发小公司推荐
  • 企业网站建设论文flash网站模板中心
  • 重庆开网站外贸在哪些网站开发客户
  • wordpress大图片网站做SEO优化
  • 安全月考评哪个网站做运营网站赚钱
  • 长春网站建设同信简易app
  • 免费创建个人博客网站东莞专业微网站建设价格
  • 淘宝客商品推广网站建设wordpress去除category
  • 深圳网站开发培训价格网站建设与网页设计入门
  • 户外产品销售公司网站建设前端编程工程师培训
  • 网盘做电子书下载网站沈阳建站公司模板
  • 企业网站建站那种好ai人工智能写作网站
  • thinkphp做的网站怎么打开企业qq官网首页
  • 网站建网站建设企业中国四大互联网巨头