Java排序之选择排序算法

原理

选择排序是从一堆参与比较的数据中找出最小值,然后拿着这个最小值与此时参与比较的元素中的最前面的那个交换位置。除去这个最小值,剩下的元素为下一轮循环的参与比较的元素,继续找出最小值,然后与当前参与比较的元素中的最前面的那个进行交换,直到最后。

举例

例如数组元素为:5,6,4,7,1
第一次循环:
(1最小,5和1交换位置): 1,6,4,7,5
至此,1被选出来,剩下的元素为下一轮参与比较的元素:6,4,7,5
第二次循环:
(4最小,6与4交换位置): 4,6,7,5
至此,4被选出来,剩下的元素为下一轮参与比较的元素:6,7,5
第三次循环:
(5最小,6与5交换位置):5,7,6
至此,5被选出来,剩下的元素为下一轮参与比较的元素:7,6
第四次循环:
(6最小,7与6交换位置):6,7
至此,循环结束,排序结果为:1,4,5,6,7

如何选出最小值

先假设当前参与比较的元素中最前面的数为最小值(arr[min]),再依次和后面的数进行比较,若无比这个数还小的数,则这个数就是最小值;若有比这个数还小的数,则将下标赋值给min,循环结束将找到的最小值与当前参与比较的元素中最前面的数进行交换。

Java代码

public static void main(String[] args){
	    int[] arr={5,6,4,7,1};
		for (int i=0;i<arr.length-1 ;i++ )
		{
			//i刚好是每一次的待比较数据的第一个元素的下标
			  //先假设最小值下标为最前面的元素的下标
			  int min=i;
			for (int j=i+1;j<arr.length ;j++ )
			{
				//如果有比当前最小值还小的数,就将该值的下标赋给min
				if (arr[j]<arr[min])
				{
					min=j;
				}
			}
			//如果min还是i的话,则证明当前参与比较的数中最前面的就是最小值,就不需要交换位置了.
			//如果min不是i的话,则证明最小值是其他的数,就交换位置,将最小值与当前参与比较的数的最前面的交换
               if (i!=min)
               {
				   //交换位置
					int temp;
					temp=arr[i];
					arr[i]=arr[min];
					arr[min]=temp;
               }
		}
		//按序输出数组元素
		for (int i=0;i<arr.length;i++)
		{
			System.out.println(arr[i]);
		}
	}

输出结果

1
4
5
6
7

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值