排序算法之选择排序

排序算法

1.选择排序

小编会在这个排序算法中总结几种常见的排序算法,为什么要进行总结呢,其实每个人的脑容量都是有限,咱们都没有过目不忘的超能力。所有对于某些知识学了,咱们还得花时间进行总结,知识是需要花时间和精力去沉淀的。所以小编会通过写帖子的方式来记录和温习一些比较基础的知识。当然,也会有很多好的算法进行分享。说了这么多题外话,进入正题吧!

给定一组数让我们排序成一个升序和降序的序列,我们能采用的排序算法有很多种,但是呢,算法也是有优劣的,判断优劣就是判断算法的时间复杂度和空间复杂度,还有一个概念就是稳定性。今天主要介绍的是选择排序!
来个动图:
在这里插入图片描述

//选择排序
public class SelectSort {
	public static void main(String[] args) {
		int[] arr = {2,4,5,1,3};	
		for(int i=0;i<arr.length;i++){	
			int minPos=i;
			for(int j=i+1;j<arr.length;j++){
//				if(arr[minPos]>arr[j]){
//					minPos=j;
//				}//注释的部分就等与下面这一条语句,也是三目运算符
				minPos=arr[minPos]>arr[j] ? j : minPos;
			}
			//交换
			Swap(arr, i, minPos);
		}
		//打印
		Print(arr);
	}
	//下面封装两个方法
	//打印最后排序的数组
	static void Print(int[] arr){
		for(int i=0;i<arr.length;i++)
			System.out.print(arr[i]);
	}
	//交换两个数组的值
	static void Swap(int[] arr,int i,int j){
		int temp=arr[i];
		arr[i]=arr[j];
		arr[j]=temp;
	}
}	
//时间复杂度为O(n^2),空间复杂度为O(1)

*分析:何为选择排序?它是怎么进行排序的?
答:这个问题是核心问题。在写代码时,第一步就是要分析,分析流程。选择排序:这里以升序排列,定义两个指针(在jiava中没有指针,所有我这里只是借用这个概念)i,j指向这个数组的第一个和第二个,双重for循环其实就是每一次确定一个数的最终位置,第一重就是确定位置,第二重就是为了找那个 j 应该放在 i 位置的数。如果有小伙伴不理解自己可以写一个数组当作例子,按上面的代码执行一下。(这个算法在排序中是很简单的一个)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值