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

学中文网站今科云平台网站建设技术

学中文网站,今科云平台网站建设技术,公积金网站怎么做增员,网络营销方法有哪些?排序算法 文章目录 冒泡排序算法步骤动图代码优化总结 选择排序算法步骤动图代码总结 插入排序算法步骤动图代码总结 排序算法,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。一般默认排序是按照由小到大即…

排序算法

文章目录

  • 冒泡排序
    • 算法步骤
    • 动图
    • 代码
    • 优化
    • 总结
  • 选择排序
    • 算法步骤
    • 动图
    • 代码
    • 总结
  • 插入排序
    • 算法步骤
    • 动图
    • 代码
    • 总结

排序算法,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。一般默认排序是按照由小到大即升序排列。

冒泡排序

冒泡排序(Bubble Sort)简单的基于比较的排序算法。每次比较相邻两个元素,如果他们的顺序错误就把他们交换过来。由于较大的数据会不断地向上”冒“,所以以冒泡排序命名。

算法步骤

  • 从头开始,比较相邻元素,如果顺序不对,就交换。
  • 每次选出一个局部最大值
  • 走过n - 1 趟后,数组就有序了

动图

请添加图片描述

代码

public class P02_BubbleSort {public static void bubbleSort(int[] arr) {if(arr == null || arr.length < 2) {return;}for(int i = 0;i < arr.length - 1;i++) {for(int j = 0;j < arr.length - 1 - i;j++) {if(arr[j] > arr[j + 1]) {swap(arr,j,j + 1);}}}}public static void swap(int[] arr,int i,int j) {int t = arr[i];arr[i] = arr[j];arr[j] = t;}public static void main(String[] args) {int[] arr = {9,8,7,6,5,4,3,2,1};bubbleSort(arr);System.out.println(Arrays.toString(arr));}
}

优化

 public static void bubbleSort(int[] arr) {if(arr == null || arr.length < 2) {return;}for(int i = 0;i < arr.length - 1;i++) {boolean success = false; for(int j = 0;j < arr.length - 1 - i;j++) {if(arr[j] > arr[j + 1]) {swap(arr,j,j + 1);success = true;}}if(success == false) {break;// 已经有序}}
}

总结

冒泡排序的时间复杂度 O ( N ) O(N) O(N),空间复杂度 O ( 1 ) O(1) O(1),冒泡排序是一种性能比较差的排序,如果不优化,那么无论是何种数据状况,都要经理 N 2 N^2 N2次比较。冒泡排序大量浪费比较行为,每趟比较只会选择出一个最大值,所以性能较差。

选择排序

选择排序是一种简单直观的基于比较的排序算法,性能不受数据状况的左右,就算是已经有序的数据,也是 O ( N 2 ) O(N^2) O(N2)的时间复杂度。

算法步骤

在这里插入图片描述
(不用交换的没有画出)

  • 0 ~ n - 1 范围 找到最小值 交换到 0 位置
  • 1 ~ n - 1 范围 找到最小值 交换到 1 位置
  • 2 ~ n - 1 范围 找到最小值 交换到 2 位置
  • … …
  • n - 2 ~ n - 1 范围找到较小值 交换到 n - 2 位置
  • 排序完成

动图

请添加图片描述

代码

package package01;import java.util.Arrays;public class P01_SelectSort {public static void selectSort(int[] arr) {if (arr == null || arr.length < 2) {return;}for (int i = 0; i < arr.length; i++) {int minIndex = i;for (int j = i + 1; j < arr.length; j++) {minIndex = arr[minIndex] < arr[j] ? minIndex : j;}swap(arr, minIndex, i);}}public static void swap(int[] arr, int i, int j) {int t = arr[i];arr[i] = arr[j];arr[j] = t;}public static void main(String[] args) {int[] arr = {9,8,7,6,5,4,3,2,1};selectSort(arr);System.out.println(Arrays.toString(arr));}
}

总结

选择排序也是一种性能较差的排序算法,性能不受数据状况左右,大量浪费比较行为。

插入排序

在这里插入图片描述

插入排序就像打扑克时拿牌一样,一张一张将扑克牌放到对应的位置,也是一个基于比较的排序。只是插入排序受数据状况影响,当数据状况趋于有序时,插入排序的速度会非常快,趋于 O ( N ) O(N) O(N),但是时间复杂度是最坏情况,所以插入排序的时间复杂度是 O ( N 2 ) O(N^2) O(N2).

算法步骤

在这里插入图片描述
就如上述数据,我们要将这组数字从小到大进行排列。从左往右依次考虑每个数字,让这个数字左边局部有序,考虑完整个数据就有序了。

  • 考虑前 1 1 1 个数 已经有序
  • 考虑前 2 2 2 个数,如果前面的数据大于当前数则交换,做到局部有序
  • 考虑前 3 3 3 个数,如果前面的数据大于当前数则交换,做到局部有序
  • … …
  • 考虑前 n − 1 n - 1 n1 个数,如果前面的数据大于当前数则交换,做到局部有序
  • 完成排序

动图

请添加图片描述

代码

package package01;import java.util.Arrays;public class P03_InsertSort {public static void insertSort(int[] arr) {if(arr == null || arr.length < 2) {return;}for(int i = 1;i < arr.length;i++) {for(int j = i - 1;j >= 0 && arr[j] > arr[j + 1];j--) {swap(arr,j,j+1);}}}public static void swap(int[] arr,int i,int j) {int t = arr[i];arr[i] = arr[j];arr[j] = t;}public static void main(String[] args) {int[] arr = {0,9,8,7,6,5,4,3,2,1};insertSort(arr);System.out.println(Arrays.toString(arr));}
}

总结

插入排序的常数时间要优于选择排序和插入排序,但是其时间复杂度仍然是 O ( N 2 ) O(N^2) ON2

如果本篇文章对你有帮助,请点赞、评论、转发,你的支持是我创作的动力。

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

相关文章:

  • 精致网站赏析建设一个电商网站的流程
  • 设备电商网站模板wordpress调用标签
  • 打开官方网站浏览器企业crm客户管理系统
  • 清河县网站建设邓州微网站建设
  • 中英文网站建设 pdf网站处于建设中会显示什么英文
  • 东莞自助建站平台有没有可以做兼职的网站吗
  • 易语言做网站简单教程苏州房地产网站建设
  • 高校门户网站建设建议网站方案策划怎么写
  • 网站建设深圳市如何做好高端品牌网站建设
  • 如何制作私人网站社区类网站有哪些
  • 怎么注册网站网址合同管理系统
  • 无锡装饰网站建设wordpress 2017 漏洞
  • 长沙做四维彩超玛丽亚m网站企业网站建设应具备的功能
  • 网站资料如何做参考文献企业网站设计制作收费
  • 网站模板建站教程视频网络公关名词解释
  • 重庆商业网站有哪些打开一个网站为繁体字是怎么做的
  • 成都网络营销网站电商企业网站源码
  • 群晖 nas 做网站网上国网app官方下载
  • 网站欣赏与创建网页教案公益机构网站建设方案
  • 北京国贸网站建设网站模板免费下载网页模板
  • 自己免费建设网站泉州网站建设 乐本园
  • 深圳广告策划公司排名山西谷歌seo
  • 普洱茶网站建设网络营销收获与体会
  • 成都网站公司网站建设云南网络营销公司哪家好
  • 平面设计比较好的网站京东方软件开发工程师待遇
  • 怎样做seo网站链接凡科网做网站怎样
  • 哪个做网站的公司好太原网页制作公司
  • 鞍山网站制作中国十大人力资源外包公司
  • html网站结构解决方案网易企业邮箱官网登录入口
  • 企业电子商务网站开发适合个人外贸平台