Java实现选择排序算法及JavaSE学习心得~

(一)选择排序

选择排序是一个简单直观的排序算法,无论什么数据使用选择排序时间复杂度都是O(n²).所以使用选择排序的时候,数组规模越小越好,唯一的好处可能就是不占用额外的内存空间吧.

1.排序过程
1)首先使用角标为0的元素依次和后面的角标对应的元素进行比较,第一次比较完角标为0对应的元素为最小(最大)值.
2)从角标为1的元素开始,再依次和后面角标对应的元素进行比较,第二次比较完角标为1处的元素就是次小(次大)值.
3)重复执行上述步骤…依次进行比较,就可以得到一个从小到大(从大到小)排序好的数组.

在这里插入图片描述

public class Sort {
	public static void main(String[] args) {
		int a [] = new int[]{16,10,5,30,50,20};
		//排序前,先把内容打印出来
		for (int i = 0; i < a.length; i++) {
			System.out.print(a[i] + " ");
		}
		System.out.println(" ");
		System.out.println("--------------------------------");		

		//选择法排序
	
		//第一步: 把第一位和其他所有位进行比较
		//如果发现其他位置的数据比第一位小,就进行交换
		
		for (int i = 1; i < a.length; i++) {
			if(a[i]<a[0]){   
				int temp = a[0];
				a[0] = a[i];
				a[i] = temp;
			}
		}
		//把内容打印出来
		//可以发现,最小的一个数,到了最前面
		for (int i = 0; i < a.length; i++) {
			System.out.print(a[i] + " ");
		}
		System.out.println(" ");
		
	
		//第二步: 把第二位的和剩下的所有位进行比较
		for (int i = 2; i < a.length; i++) {
			if(a[i]<a[1]){   
				int temp = a[1];
				a[1] = a[i];
				a[i] = temp;
			}
		}
		//把内容打印出来
		//可以发现,倒数第二小的数,到了第二个位置
		for (int i = 0; i < a.length; i++) {
			System.out.print(a[i] + " ");
		}
		System.out.println(" ");		
		System.out.println("--------------------------------");		

		//可以发现一个规律
		//移动的位置是从0 逐渐增加的
		//所以可以在外面套一层循环
		
		for (int j = 0; j < a.length-1; j++) {
			for (int i = j+1; i < a.length; i++) {
				if(a[i]<a[j]){   
					int temp = a[j];
					a[j] = a[i];
					a[i] = temp;
				}
			}
		}
		
		//把内容打印出来
		for (int i = 0; i < a.length; i++) {
			System.out.print(a[i] + " ");
		}
		System.out.println(" ");		
	}
}

输出结果如下所示:
在这里插入图片描述
(二)JavaSE学习心得
不知不觉已经学习Java SE三个周了,从helloword到现在常用类的学习,Java基础部分马上就要结束了。下面谈一谈我的学习感受。

首先呢学语言,就记住一个点:敲!敲!敲!学这方面最禁忌的大概就是眼高手低了,学习的时候总觉得自己已经懂了,但是实际去写代码的时候,却总会遇到各种小问题,总会有无从下手的时候。所以,当我们学完知识点之后,一定要动手去写,不管是仿写已有的列子,还是自己去编写测试,都要不断的去重复,有时候你听不懂的东西,可能在写代码的过程中就能体会到其中的含义和功能。因此,学习语言一定要调整好自己的学习节奏,及时解决不懂的问题,不能遗留,毕竟万丈高楼平地起,现在正是打好基础的阶段,一定要努力消化,努力吸收。

当然,实际情况因人而异,每个人的码字速度就参差不齐,或者每个人精力旺盛程度和注意力集中度不同,都会对学习效率产生很大的影响。有些人可能每天只睡五六个小时,仍然是精神满满,思维迅捷,但是有些人可能素质本身不够好,每天容易犯困,注意力难以高度集中。而学习语言是也算是一门体力活,所以学习的时候,毕竟身体才是革命的本钱。

总而言之,学习就是要脚踏实地,欲速则不达,学习的过程中一定不能心急,要做好计划。同时,好记性不如烂笔头,对于自己不懂的概念和逻辑,及时记录,之后一定要去解决这些问题,对于不懂的问题,可以向论坛,贴吧的大神进行请教,或者找身边懂技术的人,因此,学习过程中向他人请教也是很重要的一点,有时候,向他人请教的同时,可能会让自己眼前一亮,学习到更好的实习方法。

up!up!up!
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值