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

河北省建设工程安全生产监督管理网站公司网站建设有用吗

河北省建设工程安全生产监督管理网站,公司网站建设有用吗,wordpress分类权限,团购网站建站【数据结构学习笔记】选择排序 参考电子书:排序算法精讲 算法原理 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元…

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

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

算法原理

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

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/88118/

相关文章:

  • 用易语言做攻击网站软件哈尔滨做平台网站平台公司哪家好
  • 项城网站建设深圳网警
  • 最优惠的赣州网站建设上海网站营销公司
  • 为企业做网站电子商务网站开发流程包括
  • 网站群建设项目招标公告商企通三合一网站建设
  • 工厂型企业做网站河北省建设银行网站
  • 中铁建设门户网站平面设计教学视频
  • 电影网站怎么做seo做电影网站有什么流媒体好
  • 个人网站开发视频微信怎样开公众号
  • 网站备案与icp备案WordPress Grace8.2主题
  • 用wordpress建站案例网站开发团队需配备什么岗位
  • 嘉兴的信息公司网站苏州seo网站推广哪家好
  • 做鲜花的网站有哪些家政网站设计
  • 4.1网站建设的基本步骤网络热词大全
  • 常熟住房和城乡建设局网站首页简单的企业网页模板
  • 自学做网站要学什么深圳4a广告公司有哪些
  • 淘宝基地网站怎么做设计协作平台
  • 北京房产网最新楼盘常德seo优化
  • 岳阳市 网站建设商城网站 html模板
  • 为什么有的网站只有版权没有备案中国移动的网站模板
  • 昆山市网站建设宝安中心图片
  • 怎样做网站收广告费房地产市场信息系统网站
  • 北京网站建站公百度seo软件首选帝搜软件
  • 学校网站建设教程wordpress 权限设置
  • 网站建设维护是啥意思星座 网站 建设
  • 中国建设银行官方网站纪念钞预约重庆企业网站制作外包
  • 网站推广方案模板后缀是.cc的网站
  • 网页类网站长沙优化科技有限公司地址
  • 购物网站 缓存南京网站建设包括哪些
  • 晋城市 制作网站中国建设信用卡积分兑换网站