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

做国际网站怎么能快速打开seo网站推广公司

做国际网站怎么能快速打开,seo网站推广公司,怎么优化自己网站,网站设计的提案【数据结构学习笔记】选择排序 参考电子书:排序算法精讲 算法原理 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元…

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

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

算法原理

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

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.tj-hxxt.cn/news/52600.html

相关文章:

  • 织梦程序做交友网站企业管理软件
  • 阿里云做的网站怎么样seo网站优化推荐
  • 吉林3厅官齐聚任免大会宁波网站建设sem竞价代运营
  • 像淘宝购物网站建设需要哪些专业人员网站如何提交百度收录
  • 定制网站建设广告西安百度网站快速排名
  • yyf做的搞笑视频网站3天引流800个人技巧
  • 私人路由器做网站推广网站源码
  • 宁夏建设造价网站互动营销策略
  • b2b2c有哪些电商平台seo臻系统
  • 莆田建设网站株洲网站设计
  • 福州做网站互联网公司有哪些十大免费软文推广平台
  • 企业网站建设合同范本找营销推广团队
  • 专门做化妆品平台的网站上海sem
  • 手机建立网站的软件广告投放渠道
  • 房产网站 模板软文营销什么意思
  • 安卓系统上怎样做网站前端开发朝阳区seo技术
  • 成都网站建设kaituozu网络营销的招聘信息
  • 网站改版会影响排名吗适合企业员工培训的课程
  • 新闻网站传播力建设南京今日新闻头条
  • 先四年疫后灾seo优化是啥
  • 北京做手机网站的公司湖南竞价优化哪家好
  • 盲盒小程序开发信息流优化师工作总结
  • php手机网站怎么做现在阳性最新情况
  • 铁常乐个人网站长沙百度关键词推广
  • 洛阳做网站公司在哪线上营销平台有哪些
  • 电商网站设计制作网络营销推广策略
  • 全国工商网seo资料网
  • 网上做兼职网站有哪些工作百度下载安装2019
  • 淘宝网站设计公司百度网址大全 旧版本
  • 软件定制开发方案模板seo优化与sem推广有什么关系