当前位置: 首页 > 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.tj-hxxt.cn/news/109974.html

相关文章:

  • 优秀国外网站软件开发培训机构排名
  • 江苏有什么网站找工程建设人员热狗seo顾问
  • asp.net 怎么做网站怎样交换友情链接
  • 百度网页制作网站建设互联网推广广告
  • 社区微网站建设方案百度搜索下载安装
  • 一起做网店网站个人seo怎么赚钱
  • 手机做外贸有什么好的网站网络营销怎么推广
  • 厦门英文网站建设seo优化推广
  • wordpress主题top点击精灵seo
  • 聊天网站模板上海seo网络优化
  • java做音乐网站草根seo视频大全网站
  • wordpress 文章顶踩插件旺道seo推广效果怎么样
  • 申请域名空间seo刷关键词排名工具
  • 长白山开发建设集团网站直播代运营公司
  • ps怎么做网站搭建网站需要什么技术
  • 用eclipse做网站销售推广方案
  • 怎么在百度上做免费网站手机优化大师官方免费下载
  • 网站seo信息隐藏百度手机助手应用商店下载
  • 怎样给网站做 站内搜索营销方案
  • 做实验用哪些国外网站上海网站制作开发
  • 鄂州网站制作企业如何设计网站
  • 太原网站制作策划杭州最专业的seo公司
  • 国外html5 css3高端企业网站百度搜索引擎平台
  • 荆州哪个公司做网站seo应该怎么做
  • 好用的做网站的appseo网络推广优化
  • 给手机做网站的公司有哪些淮北seo排名
  • 北京王府井攻略建站网站关键词优化
  • 做网站简单的软件营销型网站模板
  • 中国未来巨型空间站怎么样拓展客户资源
  • youhosting wordpress谷歌seo推广公司