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

wordpress发号系统巢湖seo推广

wordpress发号系统,巢湖seo推广,wordpress 机制,优化资源配置JavaScript实现数据结构与算法(六)排序算法(六)排序算法1. 简单排序1.1 冒泡排序1.1.1 简介1.1.2 思路1.1.3 代码实现1.1.4 测试代码1.1.5 效率1.2 选择排序1.2.1 思路1.2.2 代码实现1.2.3 测试代码1.2.4 效率1.3 插入排序1.3.1 简介1.3.2 思…

JavaScript实现数据结构与算法(六)排序算法

    • (六)排序算法
      • 1. 简单排序
        • 1.1 冒泡排序
          • 1.1.1 简介
          • 1.1.2 思路
          • 1.1.3 代码实现
          • 1.1.4 测试代码
          • 1.1.5 效率
        • 1.2 选择排序
          • 1.2.1 思路
          • 1.2.2 代码实现
          • 1.2.3 测试代码
          • 1.2.4 效率
        • 1.3 插入排序
          • 1.3.1 简介
          • 1.3.2 思路
          • 1.3.3 效率分析
          • 1.3.5 效率分析
          • 1.3.6 代码实现
          • 1.3.7 测试代码
      • 2. 高级排序
        • 2.1 希尔排序
          • 2.1.1 简介
          • 2.1.2 思路
          • 2.1.3 选择合适的增量
          • 2.1.4 代码实现
          • 2.1.5 测试代码
          • 2.1.6 效率
        • 2.2 快速排序
          • 2.2.1 简介
          • 2.2.2 重要性
          • 2.2.3 枢纽选择
          • 2.2.4 代码实现
          • 2.2.5 测试代码
          • 2.2.6 效率
        • 2.3 插入排序
      • 3. 补充知识:大O表示法
        • 3.1 简介
        • 3.2 常见的大O表示函数
        • 3.3 推导大O表示法的方法

学习笔记:coderwhy的JavaScript实现数据结构与算法的课程
其他章节笔记链接
1. 重要性
2. 线性结构
3. 哈希表
4. 树结构
5. 图结构
6. 排序和搜索【本文】

(六)排序算法

准备工作:封装一个列表
代码如下:

	// 创建列表类function ArrayList() {// 属性this.array = [];// 方法// 将数据可以插入到数组中的方法ArrayList.prototype.insert = function (item) {this.array.push(item);};// toStringArrayList.prototype.toString = function () {return this.array.join('-');};// 交换两个位置的数据ArrayList.prototype.swap = 	function(m,n){var temp = this.array[m];this.array[m] = this.array[n];this.array[n] = temp;}// 实现排序算法};// 测试类var list = new ArrayList();// 插入元素list.insert(66);list.insert(12);list.insert(88);list.insert(7);list.insert(100);list.insert(5);list.insert(566);list.insert(23);alert(list);

1. 简单排序

1.1 冒泡排序

1.1.1 简介

在这里插入图片描述

1.1.2 思路

在这里插入图片描述

1.1.3 代码实现
// 冒泡排序ArrayList.prototype.bubblesort = function () {// 1. 获取数组的长度var length = this.array.length;for (var i = 0; i < length-1; i++){for (var j = length - 1; j >= 0; j-- ){if (this.array[j] > this.array[j+1]){// 交换两个数据this.swap(j,j+1);}}};};
1.1.4 测试代码
	// 验证冒泡排序list.bubblesort();alert(list);
1.1.5 效率

(1) 比较次数:n(n-1)/2 O(n^2)
(2) 交换次数:n(n-1)/4 O(n^2)

1.2 选择排序

1.2.1 思路

在这里插入图片描述

1.2.2 代码实现
// 选择排序ArrayList.prototype.selectionSort = function () {// 1. 获取数组的长度var length = this.array.length;// 2.外层循环:从0开始读取数据for (var j = 0; j < length - 1 ; j++){// 内层循环: 从i+1开始和后面的数据进行比较var min = j;for (var i = j ; i < length; i++){if(this.array[min] > this.array[i]){min = i;}};this.swap(min,j);}};
1.2.3 测试代码
    // 验证选择排序list.selectionSort();alert(list);
1.2.4 效率

(1) 比较次数:n(n-1)/2 O(n^2)
(2) 交换次数:n-1 O(n)

1.3 插入排序

1.3.1 简介

在这里插入图片描述

1.3.2 思路

局部有序
在这里插入图片描述
在这里插入图片描述

1.3.3 效率分析

在这里插入图片描述

1.3.5 效率分析

(1) 比较次数:n(n-1)/4 O(n^2)
(2) 交换次数:n-1 O(n)

1.3.6 代码实现
 // 插入排序ArrayList.prototype.insertSort = function () {// 1. 获取数组的长度var length = this.array.length;// 2. 外层循环:从第一个位置开始读取数据,像前面局部有序进行插入for (var i = 1 ; i < length ; i++){// 3. 内层循环:获取i位置的元素,和前面的数据依次进行比较。var temp =  this.array[i];var j = i ;while (this.array[j-1] > temp && j > 0) {this.array[j] = this.array [j-1];j--;}// 4. 将j位置的数据放置tempthis.array[j] = temp;}};
1.3.7 测试代码
   // 验证插入排序list.insertSort();alert(list);

2. 高级排序

2.1 希尔排序

2.1.1 简介

在这里插入图片描述

2.1.2 思路

在这里插入图片描述

2.1.3 选择合适的增量

在这里插入图片描述

2.1.4 代码实现
// 希尔排序ArrayList.prototype.shellSort = function () {// 1. 获取数组的长度var length = this.array.length;// 2. 初始化的增量(gap -> 间隔/间隙)var gap = Math.floor(length/2);// 3. while循环(gap)不断减小while(gap >= 1){// 4. 以gap作为间隔,进行分组,对分组进行插入操作for (var i = gap ; i < length ; i++){var temp = this.array[i];var j = i;while (this.array[j - gap] > temp && j > gap - 1 ) {this.array[j] = this.array[j - gap];j -= gap;}// 5. 将j位置的元素赋值tempthis.array[j] = temp;};// 6. 增量变化gap = Math.floor(gap / 2);};};
2.1.5 测试代码
    list.shellSort();alert(list);
2.1.6 效率

在这里插入图片描述

2.2 快速排序

2.2.1 简介

在这里插入图片描述
在这里插入图片描述

2.2.2 重要性

在这里插入图片描述

2.2.3 枢纽选择

在这里插入图片描述

2.2.4 代码实现
 // 快速排序// 1. 选择枢纽ArrayList.prototype.medium = function (left,right) {// 1. 取出中间的位置var center = Math.floor((left + right)/2);// 2. 判断大小,并且进行交换if ( this.array[left] > this.array[center]){this.swap(left , center);};if (this.array[left] > this.array[right]){this.swap(left , right);};if (this.array[center] > this.array[right]){this.swap(center , right);};// 3.将center换到right-1的位置this.swap(center , right - 1)return this.array[right - 1]};// 2. 快速排序的实现ArrayList.prototype.quickSort = function () {this.quick(0 , this.array.length - 1);};ArrayList.prototype.quick= function (left , right) {// 1. 结束条件if ( left >= right ){return};// 2. 获取枢纽var pivot = this.medium(left , right);// 3. 定义变量,用于当前找到的位置var i = left;var j = right - 1;// 4. 开始进行交换while (i<j){while(this.array[++i] < pivot){};while (this.array[--j] > pivot){};if (i < j){this.swap(i , j);}else{break;};}// 5. 将枢纽放置在正确的位置,i的位置this.swap(i ,right-1);// 6. 分而治之this.quick(left, i-1);this.quick(i + 1, right);};
2.2.5 测试代码
    list.quickSort();alert(list);
2.2.6 效率

在这里插入图片描述

2.3 插入排序

3. 补充知识:大O表示法

3.1 简介

在这里插入图片描述

3.2 常见的大O表示函数

在这里插入图片描述
在这里插入图片描述

3.3 推导大O表示法的方法

在这里插入图片描述
—————————————————————————————————————————
如果我的文章能帮你节约20秒,就请你为我的文章点个赞吧!

http://www.lbrq.cn/news/2613547.html

相关文章:

  • 做ui必要的网站最新最好的磁力搜索
  • 汕头模板建站软件网站seo优化报告
  • 内蒙古住房建设厅网站百度问一问人工客服怎么联系
  • 西安网站建设网络网站域名查询地址
  • 哪类型网站容易做找网络公司做推广费用
  • 重庆永川网站建设价格网站策划方案
  • 怎样重新运行wordpress四川seo推广公司
  • 工程建设信息官方网站做app找什么公司
  • 尤溪网站开发seo交流qq群
  • 如何做网站平台关注站长之家域名查询官网
  • 搜狗网站入口百度seo发包工具
  • 2个网站 同意内容 百度优化百度seo排名公司
  • net做网站杭州seo网站建设靠谱
  • .net和php哪个做网站好网络营销的主要手段
  • 做企业网站前期需要准备什么网络推广宣传方式
  • 做网站 学php哪一部分网络营销的主要特点有哪些
  • 网站独立物流系统查指数
  • 做网站一般注册哪几类商标项目优化seo
  • 山东做网站建设的好公司成都网络营销搜索推广
  • 网站后台怎么上传文章百度文库个人登录
  • 京东网站建设及特点软件推广平台
  • 做网站的流程是怎么样的重庆seo优化
  • 怎么做自己网站产品seo百度建站
  • 天天向上做图网站企业类网站有哪些例子
  • 新浪云虚拟主机做电影网站西安小程序开发的公司
  • 网站建设运营期末考试seo常用的优化工具
  • 做淘宝客网站能有效果吗软文是什么
  • 做类似电驴网站抖音关键词推广
  • wordpress编辑器按钮七台河网站seo
  • 怎样做一个好的网站百度推广登录首页官网
  • VINS-Fusion+UWB辅助算法高精度实现
  • 2025年08月 GitHub 热门项目推荐
  • Linux基础命令的生产常用命令及其示例简单解释
  • 基于 kubeadm 搭建 k8s 集群
  • 分布式文件系统06-分布式中间件弹性扩容与rebalance冲平衡
  • 【学习笔记】Manipulate-Anything(基于视觉-语言模型的机器人自动化操控系统)