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

简单小网站成都高端网站建设公司

简单小网站,成都高端网站建设公司,嘉兴优化网站公司哪家好,中国网站排名站长之家选择排序 选择排序代码实现代码优化 排序: 排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。 稳定性: 假定在待排序的记录序列中,存在多个具有相同的关键字的记录&…

在这里插入图片描述

选择排序

  • 选择排序
  • 代码实现
  • 代码优化

排序: 排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。

稳定性: 假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中, r[i] = r[j], 且 r[i] 在 r[j] 之前,而在排序后的序列中, r[i] 仍在 r[j] 之前,则称这种排序算法是稳定的;否则称为不稳定的。
(注意稳定排序可以实现为不稳定的形式, 而不稳定的排序实现不了稳定的形式)

在这里插入图片描述

内部排序: 数据元素全部放在内存中的排序。

外部排序: 数据元素太多不能同时放在内存中,根据排序过程的要求不能在内外存之间移动数据的排序。

选择排序

选择排序(Selection Sort)是一种简单的排序算法,其基本思路可以描述为:

  • 初始状态: 将待排序的数据分为两部分,一部分是已排序的部分(初始为空),另一部分是未排序的部分(初始包含所有元素)。

  • 找到最小元素: 在未排序部分中,找到最小的元素,将其与未排序部分的第一个元素交换位置,即将最小元素放到已排序部分的末尾。

  • 重复步骤: 继续以上步骤,每次在未排序部分中找到最小的元素,并将其交换到已排序部分的末尾,逐渐将所有元素都移动到已排序部分。

  • 完成排序: 当未排序部分没有元素时,排序完成,整个数据集已经按照升序(或降序)排列好了。

选择排序的核心思想是在未排序的部分中选择最小的元素,并将其放到已排序部分的末尾,逐步缩小未排序部分的范围,直到整个数据集排序完成。选择排序的时间复杂度为O(n^2),不适用于大型数据集。

在这里插入图片描述

代码实现

    public static void selectSort(int[] arr) {int len = arr.length;for (int i = 0; i < len-1; i++) {// 假设未排序部分的第一个元素为最小int minIndex = i;// 找到未排序部分中的最小的元素for (int j = i+1; j < len; j++) {if (arr[j] < arr[minIndex]) {minIndex = j;}}if (minIndex != i) {// 将最小元素放到未排序的最前面int temp = arr[i];arr[i] = arr[minIndex];arr[minIndex] = temp;}}}

代码优化

优化一:

同时选择最大值和最小值

    public static void selectSort2(int[] arr) {int len = arr.length;int left = 0;int right = len - 1;while (left < right) {// 同时记录最大值和最小值的下标int minIndex = left;int maxIndex = left;// 找未排序区间中的最大值和最小值的下标for (int i = left + 1; i <= right; i++) {if (arr[i] < arr[minIndex]) {minIndex = i;}if (arr[i] > arr[maxIndex]) {maxIndex = i;}}// 确定最大值和最小值swap(arr, left, minIndex);// 当 left 下标对应的值就是最大值时, 上面这个 swap 有可能把 最大值的位置换到最小值的位置if (left == maxIndex) {maxIndex = minIndex;}swap(arr, right, maxIndex);// 未排序的区间减小left++;right--;}}public static void swap (int[] arr, int index1, int index2) {int temp = arr[index1];arr[index1] = arr[index2];arr[index2] = temp;}

虽然性能有提升, 但是时间复杂度还是 O(N*N)

优化二:

堆排序是一种树形选择排序,是对直接选择排序的有效改进。
堆排序详解

总结:

  • 时间复杂度: O(N*N)
  • 空间复杂度: O(1)
  • 是不稳定排序: 举个例子,序列arr = [5 8 5 2 9],我们知道第一遍选择第1个元素5会和2交换,那么原序列中两个5的相对前后顺序就被破坏了,所以选择排序是一个不稳定的排序算法。
  • 对数据不敏感: 没有好坏之分, 不管数据原本的分布情况, 每层循环都需要遍历一遍, 直接选择排序思考非常好理解,但是效率不是很好。实际中很少使用。

以上就是对选择排序的讲解, 希望能帮到你 !
评论区欢迎指正 !

http://www.yayakq.cn/news/175263/

相关文章:

  • 带m开头的网站怎么做辽阳好的网站建设公司
  • 怎样把网站提交到百度山西太原发现4例阳性
  • 做网站多少钱PageAdmin怎样建立个人的网站
  • 做微信头图的网站安卓apk开发
  • 自己做免费手机网站正规的网店代运营
  • 网站建设先进工作者wordpress的介绍
  • 网站首页被k怎么办视频网站高管有做传统媒体出身的吗?优酷副总裁转型成功的概率有多少?
  • 网站做百度百科营销型网站建设页面
  • 郑州外贸网站建站关键词林俊杰在线听免费
  • 番禺开发网站费用在线平面设计接单
  • 网站开发的问题上海何鹏seo
  • 重庆工程建设造价信息网站wordpress主题租房
  • 上海网站设计案例大数据下的精准营销
  • 汕头市住房和城乡建设局网站企业如何申请网址
  • 技术支持:淄博网站建设百度公司全称
  • 小城镇建设官方网站设计咨询服务合同
  • 网站制作技术方案北京市建设工程交易服务中心网站
  • 1元网站建设精品网站制作哈尔滨最新信息
  • 天河区营销型网站建设东莞网络推广外包托管
  • 电商网站设计的流程php 企业建站cms
  • 网页制作与网站建设课程设计哪里的网站建设好
  • 网站制作的趋势织梦门户网站模板
  • 安徽省建设监理网站地情网站建设方案
  • 阿里云搭建自己的网站自己做彩票网站简单吗
  • 哪个网站可以学做衣服什么是网络营销名词解释
  • 网站建设多选题百度文库一站式发稿平台
  • 北京海淀公司网站icp备案网站只收录主页
  • 湖南网站建设设计狮岭做包包的网站
  • 网站开发的软件环境有哪些营销型网站建设策划书怎么写
  • 现在建网站做淘宝联盟推广能赚钱吗查建筑公司网站