当前位置:首页 > 学习笔记 > Java教程 > Java教程第七节:选择排序法和和冒泡排序法

Java教程第七节:选择排序法和和冒泡排序法

刘广法2022年03月15日 16:25:30Java教程4620
Java教程第七节:选择排序法和和冒泡排序法-第1张图片-刘广法IT博客

选择法排序:

分为若干轮比较,每一轮找出一个最大值。

刘广法整理思路:假设有数组{ 1, 2, 3, 5, 98, 24, 6, 456, 14 },假设第一个数字最大,然后从第二个开始依次和第一个比,如果比第一个大,那就调换位置,每一轮找一个从剩下的找一个最大的。

	public static void main(String[] args) {
		// 选择排序法
                int a[] = { 1, 2, 3, 5, 98, 24, 6, 456, 14 };
		for (int i = 1; i < a.length; i++) {// 循环轮数
			for (int j = i; j < a.length; j++) {//剩下的所有数
				if (a[j] > a[i - 1]) {// 第几轮那第几个数和所有数作比较并置换出最大值
					int m = a[i - 1];
					a[i - 1] = a[j];
					a[j] = m;
				}
			}
		}
		System.out.println(Arrays.toString(a));
	}

也可以这样写:

变换位置的地方有:int 初始值由原来的1 变成现在的0 ,循环的轮数也有变换,剩下的所有数的表达式也有变换

	public static void main(String[] args) {
		// 选择排序法
		int a[] = { 1, 2, 3, 5, 98, 24, 6, 456, 14 };
		for (int i = 0; i < a.length - 1; i++) {// 循环轮数
			for (int j = i - 1; j < a.length - 1; j++) {// 剩下的所有数
				if (a[j + 1] > a[i]) {// 第几轮那第几个数和所有数作比较并置换出最大值
					int m = a[i];
					a[i] = a[j + 1];
					a[j + 1] = m;
				}
			}
		}
		System.out.println(Arrays.toString(a));
	}

Java控制台输出结果:

[456, 98, 24, 14, 6, 5, 3, 2, 1]

冒泡排序法:

刘广法思路:所有数都等待排序,第一轮就是选择一个小的放在后面,一直比较一直比较,那么最小的就跑到最后面了

	public static void main(String[] args) {
		// 冒泡排序法
		int a[] = { 2, 5, 6, 8, 93, 1, 328, 12, 5, 123, 485, 5 };
		for (int i = 0; i < a.length-1; i++) {
			for (int j = 0; j < a.length - i - 1; j++) {
				if (a[j] < a[j + 1]) {
					int t = a[j + 1];
					a[j + 1] = a[j];
					a[j] = t;
				}
			}
			System.out.println(Arrays.toString(a));
		}
	}

Java控制台输出结果:

[5, 6, 8, 93, 2, 328, 12, 5, 123, 485, 5, 1]
[6, 8, 93, 5, 328, 12, 5, 123, 485, 5, 2, 1]
[8, 93, 6, 328, 12, 5, 123, 485, 5, 5, 2, 1]
[93, 8, 328, 12, 6, 123, 485, 5, 5, 5, 2, 1]
[93, 328, 12, 8, 123, 485, 6, 5, 5, 5, 2, 1]
[328, 93, 12, 123, 485, 8, 6, 5, 5, 5, 2, 1]
[328, 93, 123, 485, 12, 8, 6, 5, 5, 5, 2, 1]
[328, 123, 485, 93, 12, 8, 6, 5, 5, 5, 2, 1]
[328, 485, 123, 93, 12, 8, 6, 5, 5, 5, 2, 1]
[485, 328, 123, 93, 12, 8, 6, 5, 5, 5, 2, 1]
[485, 328, 123, 93, 12, 8, 6, 5, 5, 5, 2, 1]


文章原创,转载请注意出处,来源:刘广法博客,不保留必追究

扫描二维码推送至手机访问。

版权声明:本文由刘广法博客发布,如需转载请注明出处。

本文链接:https://liuguangfa.com/java/118.html

分享给朋友:

“Java教程第七节:选择排序法和和冒泡排序法” 的相关文章

java学习:Java流程控制语句的相关测试题

第一题:将所有包含3的三位数整数相加求和。103 131 133 301类似。public static void main(String[] args) { int n = 100;// 从n开始三位数...

eclipse删除工作空间的详细步骤(图解)

eclipse删除工作空间的详细步骤(图解)

上一次我修改添加eclipce的工作空间,但只我的eclipce上有两个工作空间,今天我想删除一个第一步: Window > Preferences > General > startup and shutdown -->workspace这就是删除eclipse的...

Java练习:从控制台输入一个年份,统计输入的年份到现在一共多少天?

从控制台输入一个年份,统计输入的年份到现在一共多少天?注意事项:1、平年365天,闰年十366天。2月份平年28天,2月份闰年29年。2、今年2022年3月14日3、闰年判断:能够被四百整数;能被4整数但不能被100整数public static void main(S...

Java练习:百钱百鸡利用Java进行实现

今有100块钱,需要购买100只鸡,已知鸡的价格是:公鸡5元,母鸡3元,小鸡三只元,问:需要购买多少只公鸡、母鸡、小鸡?Java实现百鸡百钱的方法一: public static void main(String[] args) { for&n...

Java教程 第六节:数组

数组数组:简单来说,就是一组相同数据类型的数。float[] score = new float[6];索引或者下标:必须是整数,不能为负。最大下标等于数组长度-1。float[0],就是float类型数据score的第一个项。数组的下标结合循环,可以简化对批...

Java练习:将数组中的元素首尾调换

数组课堂练习:将数组中的元素首尾调换 public static void main(String[] args) { // 数组课堂练习:将数组中的元素首尾调换 int[] a = { ...

Java练习:定义一共整数数组a,b,两个数组,判断两个数组中的重复的元素以及重复次数

Java课后作业:定义一共整数数组a,b,两个数组,判断两个数组中的重复的元素以及重复次数问题1:判断两个数组中重叠的元素?问题2:重叠的元素都重叠了几次,进行排序输出?本题关键:去重(验证之前是否验证过此数)、排序,(冒泡排序法和选择排序法)、关键字break 和continue 的使用 //&n...

Java练习:定义一个函数,计算两个整数的最大公约数

Java面试题:定义一个函数,计算两个整数的最大公约数本题关键点:最大的公约数能够被两个数都整除的数 public static void main(String[] args) { // 定义一个函数,计算两个整数的最大公约数...

关于Math.random();的说明

关于Math.random();的关系:一、随机产生某区间的数:int (Math.random() * (最大值 - 最小值) + 最小值)一、Math.random(); 在Java中式产生随机产生 [0,1) 之间的数创建一个方法:返回一个m~n 的值,包括m 但不包括 n ,如果返回 -1...

Java教程 第九节:字符串

创建字符串:// 创建字符串 String sString = "我是字符串"; String sString2 = "我是字符串2"; String sString3&nb...

Java练习:面向对象的对应练习题

Java练习:面向对象的对应练习题创建有20个学生对象,每个学生有不同的名字和性别、考试成绩。给这20个学生随机的考试成绩。使用面向对象的思想。题目1:统计这20个学生的平均分,男生的平均分,女生的平均分。题目2:按照考试成绩,对这个20个学生进行排序方法一:刘广法自己的方法(比较难)Clazz类(...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。