第三篇排序算法|选择排序
时间:2022-07-28
本文章向大家介绍第三篇排序算法|选择排序,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
0x01,前言闲叙
其实对于这样的内容,自己没有一个很明确的讲解流程,一般还是按照下面的内容来说吧,先暂时看下大概的内容。
0x02,什么是选择排序?
【百度百科介绍】选择排序(Selection sort)是一种简单的直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。
0x03,选择排序代码的实现
public class SelectionSortTest {
public static void main(String[] args) {
int[] arr = {1, 3, 2, 4, 7, 8, 5, 9, 6, 10};
selectionSort(arr);
for (int num : arr
) {
System.out.print(num + "t");
}
}
/**
* @param arr 待排序数组
*/
public static void selectionSort(int[] arr) {
int length = arr.length;
for (int i = 0; i < length - 1; i++) {
int minIndex = i;//每次从未排序数组中选择一个,选择了length-1个
for (int j = i + 1; j < length; j++) {//查找数组的最小下标
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}
swap(arr, minIndex, i);//数据交换
}
}
//数据交换
private static void swap(int[] arr, int minIndex, int i) {
int temp = arr[minIndex];
arr[minIndex] = arr[i];
arr[i] = temp;
}
}
0x04,选择排序实现图片版
0x05,选择排序的时间复杂度?
时间复杂度为:O(n^2),还是蛮高的,冒泡排序的时间复杂度一样
0x06,选择排序是否稳定?
选择排序不是一种稳定性排序,是因为在数据元素在交换的过程中有可能会发生前后顺序的变化
0x07,总结一下
这是自己写的第三篇排序算法了,还是那句话,为什么现在网络上这么多文章了,你还要写?况且你写的没有别人的好(实话),其实一篇文章的输出其实本质上是为了自己,在输出的过程中就是自己的一种思考和实现的过程,但是千万别把别人的文章原封不动的搬到自己博客里,因为这没有意义,每个人都有着自己的活法,没有必要认为我的想法是好的,你有的活法,别人有别人的活法,这里也仅仅给出一点自己的看法
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 网页背景H5视频自动播放---PC端、移动端兼容问题完美解决方案(IOS、安卓、微信端)
- 【STM32F407】第11章 RL-TCPnet V7.X之TCP服务器
- 如何解决nodejs中cpu密集型的任务
- 博客园主题1【备份】
- 手牵手,使用uni-app从零开发一款视频小程序 (系列下 开发实战篇)
- POSTGRESQL 到底怎么访问同instance 的库--
- 简单工厂模式
- 这 9 种方法有效帮你提高国内访问 Github 的速度
- python实现sm2和sm4国密(国家商用密码)算法
- 面试常考算法之区间问题
- 爬虫 | JS逆向某验滑动加密分析
- LeetCode | 28.实现strStr()
- Redis | Redis 哈希相关命令
- 如何访问SAP Spartacus里的config数据
- 工具系列 | HTTP API 身份验证和授权