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

河北省建设局网站首页云南seo简单整站优化

河北省建设局网站首页,云南seo简单整站优化,网页版游戏排行榜女,800元做网站详细描述 选择排序的工作原理是:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾&#xf…

详细描述

选择排序的工作原理是:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾,以此类推,直到全部待排序的数据元素的个数为零。

选择排序详细的执行步骤如下:

  1. 初始状态:无序区为 R[1..n],有序区为空;
  2. 第 i 趟排序 (i=1,2,3…n-1) 开始时,当前有序区和无序区分别为 R[1...i-1] 和 R[i...n]。该趟排序从当前无序区中选出关键字最小的记录 R[k],将它与无序区的第 1 个记录 R 交换,使 R[1...i] 和 R[i+1...n] 分别变为记录个数增加 1 个的新有序区和记录个数减少 1 个的新无序区;
  3. 经过 n-1 趟,无序序列就有序化了。

算法图解

问题解疑

为什么选择排序是不稳定的?

虽然原理上存在有序区和无序区的区分,但是选择排序算法为了提高空间的使用率,使用的是原地交换方式。

与冒泡排序两两比较交换不同,选择排序算法是最小的元素与固定位置的元素进行交换,当这个固定位置的元素被交换到另一个位置之后,也就有可能导致相等的数字次序变化。

选择排序的时间复杂度是多少?

无论原序列是有序还是无序,选择排序都需要对序列做完整的遍历,即最好情况时间复杂度和最坏情况时间复杂度都是 O(n2);平均时间复杂度是 O(n2)。

代码实现

排序接口

 
package cn.fatedeity.algorithm.sort;
/**
* 排序接口
*/
public interface Sort {
int[] sort(int[] numbers);
}

排序抽象类

 
package cn.fatedeity.algorithm.sort;
/**
* 排序抽象类
*/
public abstract class AbstractSort implements Sort {
protected void swap(int[] numbers, int src, int target) {
int temp = numbers[src];
numbers[src] = numbers[target];
numbers[target] = temp;
}
}

选择排序类

 
package cn.fatedeity.algorithm.sort;
/**
* 选择排序类
*/
public class SelectionSort extends AbstractSort {
@Override
public int[] sort(int[] numbers) {
if (numbers.length <= 1) {
return numbers;
}
for (int i = 0; i < numbers.length - 1; i++) {
for (int j = i + 1; j < numbers.length; j++) {
// 选取到小的值做交换
if (numbers[i] <= numbers[j]) {
continue;
}
this.swap(numbers, i, j);
}
}
return numbers;
}
}

 详细描述

选择排序的工作原理是:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾,以此类推,直到全部待排序的数据元素的个数为零。

选择排序详细的执行步骤如下:

  1. 初始状态:无序区为 R[1..n],有序区为空;
  2. 第 i 趟排序 (i=1,2,3…n-1) 开始时,当前有序区和无序区分别为 R[1...i-1] 和 R[i...n]。该趟排序从当前无序区中选出关键字最小的记录 R[k],将它与无序区的第 1 个记录 R 交换,使 R[1...i] 和 R[i+1...n] 分别变为记录个数增加 1 个的新有序区和记录个数减少 1 个的新无序区;
  3. 经过 n-1 趟,无序序列就有序化了。

算法图解

问题解疑

为什么选择排序是不稳定的?

虽然原理上存在有序区和无序区的区分,但是选择排序算法为了提高空间的使用率,使用的是原地交换方式。

与冒泡排序两两比较交换不同,选择排序算法是最小的元素与固定位置的元素进行交换,当这个固定位置的元素被交换到另一个位置之后,也就有可能导致相等的数字次序变化。

选择排序的时间复杂度是多少?

无论原序列是有序还是无序,选择排序都需要对序列做完整的遍历,即最好情况时间复杂度和最坏情况时间复杂度都是 O(n2);平均时间复杂度是 O(n2)。

代码实现

排序接口

 
package cn.fatedeity.algorithm.sort;
/**
* 排序接口
*/
public interface Sort {
int[] sort(int[] numbers);
}

排序抽象类

 
package cn.fatedeity.algorithm.sort;
/**
* 排序抽象类
*/
public abstract class AbstractSort implements Sort {
protected void swap(int[] numbers, int src, int target) {
int temp = numbers[src];
numbers[src] = numbers[target];
numbers[target] = temp;
}
}

选择排序类

 
package cn.fatedeity.algorithm.sort;
/**
* 选择排序类
*/
public class SelectionSort extends AbstractSort {
@Override
public int[] sort(int[] numbers) {
if (numbers.length <= 1) {
return numbers;
}
for (int i = 0; i < numbers.length - 1; i++) {
for (int j = i + 1; j < numbers.length; j++) {
// 选取到小的值做交换
if (numbers[i] <= numbers[j]) {
continue;
}
this.swap(numbers, i, j);
}
}
return numbers;
}
}
http://www.tj-hxxt.cn/news/120277.html

相关文章:

  • 重庆网站制作哪家好如何设计一个网站页面
  • 华文细黑做网站有版权吗2023网站seo
  • 想更新公司网站怎么做百度搜索引擎关键词优化
  • 主流动态网站开发语言营销技巧和营销方法培训
  • 南京网站开发xuan南京乐识今日国际重大新闻事件
  • 门户网站做等保需要备案哪些外链link
  • 暗网网站有那些互联网品牌营销公司
  • 做一网站要什么哪个公司做网站推广最好
  • 做pc端软件可以参考那些网站百度关键词推广怎么收费
  • 为什么要建设就业指导网站软件推广怎么赚钱
  • 做免费采集电影网站犯法吗做网站哪家好
  • 网站权重怎么做的企业qq怎么申请
  • 竞价培训哪家比较好好的seo平台
  • ecshop网站模版电子网址怎么创建
  • 企业网站的建设与维护app拉新怎么对接渠道
  • 建设银行银行官网网站广州网页推广公司
  • wordpress下载管理器seo排名首页
  • 水利建设相关网站互联网行业最新资讯
  • 中国室内设计联盟官方网站入口免费推广网站入口
  • 动易网站制作教程海外seo网站推广
  • 产地证是在哪个网站上做淘宝宝贝关键词排名查询工具
  • dede 网站入侵seo技巧与技术
  • 曲阜网站建设百度开户广州网站优化步骤
  • 山东网站建设都有那些福建搜索引擎优化
  • 优推宝可以做自己网站吗搜索软件使用排名
  • 简述电子商务网站的建站流程销售怎么找客户源
  • 学做ppt的网站有哪些电脑培训班有哪些科目
  • wordpress有微信主题吗温州seo优化
  • 网站建设后期服务收费标准百度关键词刷排名软件
  • 高端的科技网站建设网络营销成功案例ppt免费