排序系列 之 选择排序

  • !!!排序仅针对于数组哦
  • 本次排序是按照升序来的哦

介绍

  • 快速排序英文名为SelectSort
  • 从数组中找到最小的放到前边

基本思路

  • 1、默认待排序数组中第一个作为最小值
  • 2、找待排序数组(注意不是整个数组哦)中真正的最小值
  • 3、找到真正的最小值和待排序数组第一个数据进行交换,真正的最小值到达正确位置
  • 4、重复1、2、3

代码

java 复制代码
<!----java----->
public static void main(String[] args) {

		int[] arr = {10,2,8,3,1};
		sort(arr);
		System.out.println(Arrays.toString(arr));
		
	}
	
	// 代码
	public static void sort(int[] arr) {
		for(int i=0;i<arr.length;i++) {
			// 定义第一个数为最小值,其实就是i这个位置。因为第一轮为0,第二轮为1,。。。。
			// 定义一个变量去接收最小值,默认为i
			int minIndex = i;
			for(int j=i+1;j<arr.length;j++) {
				// 开始遍历后边的数
				// 如果当前数比定义的最小的数还要小,交换
				if(arr[j]<arr[minIndex]) {
					minIndex = j;
				}
			}
			// 退出循环后,此时minIndex指向的就是最小值。然后我们跟带排序数组的第一个位置交换
			// 此时minIndex为最小数值的下标
			// 这里可以不判断,就是自己跟自身多交换一次,也可以判断不同的才交换
			if(i!=minIndex) {
				int temp = arr[i];
				arr[i] = arr[minIndex];
				arr[minIndex] = temp;
			}

		}
	}

<!------------------------>
运行结果;
[1, 2, 3, 8, 10]
python 复制代码
<!----python----->
def selectSort(arr):
    for i in range(len(arr)):
        min = i;
        for j in range(i+1,len(arr)):
            if(arr[j]<arr[min]):
                min = j;

        arr[i],arr[min] = arr[min],arr[i];
    return arr;


arr = [10,2,8,3,1]
print(selectSort(arr))
<!------------------------>
运行结果;
[1, 2, 3, 8, 10]

没明白?老规矩,上图

复杂度

  • 时间复杂度为:O(n^2)
  • 空间复杂度:O(1)
  • 它是非稳定排序
  • 原地排序

推荐博客:

相关推荐
阿幸软件杂货间8 分钟前
PPT转图片拼贴工具 v3.0
python·opencv·计算机视觉·powerpoint
杰哥技术分享13 分钟前
IDEA 打开文件乱码
java·ide·intellij-idea
猫头虎16 分钟前
[特殊字符]解决 “IDEA 登录失败。不支持早于 14.0 的 GitLab 版本” 问题的几种方法
java·ide·网络协议·http·https·gitlab·intellij-idea
struggle202522 分钟前
LLMControlsArm开源程序是DeepSeek 控制熊猫机械臂
人工智能·python·cmake·jupyternotebook·deepseek
Teln_小凯43 分钟前
Python读取阿里法拍网的html+解决登录cookie
开发语言·python·html
娃哈哈哈哈呀44 分钟前
html-pre标签
java·前端·html
点云SLAM1 小时前
PyTorch中matmul函数使用详解和示例代码
人工智能·pytorch·python·深度学习·计算机视觉·矩阵乘法·3d深度学习
LanLance1 小时前
ES101系列09 | 运维、监控与性能优化
java·运维·后端·elasticsearch·云原生·性能优化·golang
Java永无止境1 小时前
Web前端基础:HTML-CSS
java·前端·css·html·javaweb
安全系统学习1 小时前
网络安全逆向分析之rust逆向技巧
前端·算法·安全·web安全·网络安全·中间件