Java基础 |数组排序

这篇具有很好参考价值的文章主要介绍了Java基础 |数组排序。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


所有知识点均来源于《Java从入门到精通》(第六版)。

冒泡排序

他排序数组的过程中总将较小的数往前排,较大的数往后放,类似水中气泡往上升的动作,所以叫冒泡排序。
基本思想是对比相邻的元素值,如果满足条件就交换元素值,把较小的元素移动到数组前面,把较大的元素移动到数组后面(交换两个元素)。
用两个循环来实现:一个循环用来控制排序的轮次,另一个用来做交换。
而且每次轮次需要排序的次数也会少一次,因为每一轮都会把最大的数字放到最后一位去。

冒泡排序的时间复杂度 是O(n²)。

public class BubbleSort {
	public static void main(String[] args) {
		int[] array = {63,4,24,1,3,15};
		BubbleSort sorter = new BubbleSort();
		sorter.sort(array);
		for (int i=0;i<array.length;i++) {
			System.out.print(array[i]+" ");
			
		}
	}
	public void sort(int[] array) {
		for(int i=1;i<array.length;i++) {
			for (int j=0;j<array.length-i;j++) {
				if (array[j]>array[j+1]) {
					int a = array[j];
					array[j] = array[j+1];
					array[j+1] = a;
				}
			}
		}
	}
}

直接选择排序

将指定排序位置元素与其他元素分别对比,交换位置,所以是把满足条件的元素与指定的排序位置交换(比如从最后一个元素开始排序),知道整个数组排序。

也是双循环,第一个循环控制几个轮次,第二个循环来找最大值。
直接选择的时间复杂度是O(N log(N))。

public class SelectSort {

	public static void main(String[] args) {
		int[] array = {63,4,24,1,3,15};
		SelectSort sorter = new SelectSort();
		sorter.sort(array);
		for (int i=0;i<array.length;i++) {
			System.out.print(array[i]+" ");
		}
	}
	public void sort(int[] array) {
		int m;
		//需要几个轮次,每个轮次都找最大值
		for (int i=1; i<array.length;i++) {
			m = 0;
			for (int j=1; j<=array.length-i;j++) {
				if (array[j]>array[m]) {
					m = j;
				}
			}
			int a = array[m];
			array[m] = array[array.length-i];
			array[array.length-i] = a;
		}
	}
}

反转排序

以相反的顺序把数组重新排序,实现办法是第一个元素和最后一个交换,第二个和倒数第二个交换,一直到全部交换。文章来源地址https://www.toymoban.com/news/detail-823922.html

public class ReverseSort {

	public static void main(String[] args) {
		int[] array = {10,20,30,40,50,60};
		ReverseSort sorter = new ReverseSort();
		sorter.sort(array);
		for (int i=0;i<array.length;i++) {
			System.out.print(array[i]+" ");
		}
	}
	public void sort(int[] array) {
		int len = array.length;
		for (int i=0;i<len/2;i++) {
			int a = array[i];
			array[i] = array[len-1-i];
			array[len-1-i] = a;
		}
	}
}

到了这里,关于Java基础 |数组排序的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【算法基础】java基础——数组&静态方法

    数组:         数组能够顺序存续相同类型的多个数据。         一维数组:如果有n个数据,它们的编号为0到n-1,对于0到n-1之间任意的i,可以用a[i]表示数组a中的第i+1个元素。 初始化数组: 举例: double []a; a=new double[N]; double [] b=new double [N]; int c={1,3,4,76,8} 使用数组: a.

    2024年01月20日
    浏览(39)
  • Java基础(七)排序算法

    1. 冒泡排序 冒泡排序的思想 冒泡排序是一种简单的排序算法,其基本思想是通过多次遍历待排序序列,依次比较相邻的元素并交换位置,使得每次遍历后最大(或最小)的元素冒泡到序列的末尾。 具体步骤如下: 从待排序序列的第一个元素开始,依次比较相邻的两个元素。

    2024年02月13日
    浏览(82)
  • 【Java基础教程】(八)面向对象篇 · 第二讲:Java 数组全面解析——动态与静态初始化、二维数组、方法参数传递、排序与转置、对象数组、操作API~

    掌握数组的动态及静态创建方式、使用及特征; 掌握引用类型数据的特征; 掌握数组的排序、转置操作; 数组可以将多个变量进行统一的命名,这样相同类型的元素就可以按照一定的顺序进行组合排列 。在 Java中,数组属于引用类型数据,所以在数组的操作过程中,也一定

    2024年02月13日
    浏览(35)
  • 【经典算法】 leetcode88.合并排序的数组(Java/C/Python3实现含注释说明,Easy)

    作者主页: 🔗进朱者赤的博客 精选专栏:🔗经典算法 作者简介:阿里非典型程序员一枚 ,记录在大厂的打怪升级之路。 一起学习Java、大数据、数据结构算法( 公众号同名 ) ❤️觉得文章还不错的话欢迎大家点赞👍➕收藏⭐️➕评论,💬支持博主,记得点个大大的 关

    2024年04月22日
    浏览(27)
  • 【算法】算法学习二:链表 & 数组 & 选择排序

    链表和数组是常见的数据结构,用于组织和存储数据。它们在内部实现和使用方式上有一些显著的区别。 数组是一个连续的内存块,用于存储相同类型的元素。数组的每个元素通过索引访问,索引从0开始。数组的主要特点包括: 随机访问:由于数组的元素在内存中是连续存

    2024年02月06日
    浏览(73)
  • 从零开始学习 Java:简单易懂的入门指南之查找算法及排序算法(二十)

    ​ 也叫做顺序查找 ​ 说明:顺序查找适合于存储结构为数组或者链表。 基本思想 :顺序查找也称为线形查找,属于无序查找算法。从数据结构线的一端开始,顺序扫描,依次将遍历到的结点与要查找的值相比较,若相等则表示查找成功;若遍历结束仍没有找到相同的,表

    2024年02月10日
    浏览(35)
  • java数组.day16(冒泡排序,稀疏数组)

    冒泡排序无疑是最为出名的排序算法之一,总共有八大排序! 冒泡的代码还是相当简单的,两层循环,外层冒泡轮数,里层依次比较,江湖中人人尽皆知。 我们看到嵌套循环,应该立马就可以得出这个算法的时间复杂度为O(n2)。 代码示例: 当一个数组中大部分元素为0,或者

    2024年04月11日
    浏览(25)
  • Java对二维数组进行排序

    今天刷题时需要用到二维数组的排序,奈何一下想不起具体的写法了,那就浅浅复习总结一下吧,加深一下自己的印象。 主要可以分为三种写法: 1.运用Comparator的常规写法,例如:         上述代码提到的的o1和o2可以理解为二维数组中的任意两个一维子数组,其中o1[0]与

    2024年02月09日
    浏览(38)
  • Java练习题-用冒泡排序法实现数组排序

    ✅作者简介:CSDN内容合伙人、阿里云专家博主、51CTO专家博主、新星计划第三季python赛道Top1🏆 📃个人主页:hacker707的csdn博客 🔥系列专栏:Java练习题 💬个人格言:不断的翻越一座又一座的高山,那样的人生才是我想要的。这一马平川,一眼见底的活,我不想要,我的人生

    2024年02月08日
    浏览(41)
  • 新手入门Java数组排序及二维数组(有练习)

    1.数组的定义方式都有哪几种 2.基本数据类型的数组中默认值分别是什么 byte[] short[] int[] long[] double[] float[] boolean[] char[] String[] 0 0 0 0 0.0 0.0f flase ‘u0000’ null 3.数组有哪些特征 数组一旦赋值,长度就固定下来了,不可再改变。数组的最大下标是数组的长度-1.数组下标从0开始

    2024年02月01日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包