数组排序

1、选择排序

1.1、原理

数组中的每一个元素与其他所有元素进行对比(除了本身外),对比结果是否符合预期
升序则判断谁大,将较大的值换到后面
降序则判断谁小,将较小的值换到后面;

**** 升序排序例子,降序同理,只是调整一下判断逻辑
1、升序排序说明
int[] a = {4,2,1,3};

a[0]-a[1]比较 =>{2413};
a[0]-a[2]比较 =>{1423};
a[0]-a[3]比较 =>{1423};

a[1]-a[2]比较 =>{1243};
a[1]-a[3]比较 =>{1243};

a[2]-a[3]比较 =>{1234};

1.2、代码实现

**** 升序排序例子,降序同理,只是调整一下判断逻辑
public static void selectSort(int[] a){
	int temp = 0;
	//外层循环每一个元素,但是不包括最后一个元素
	for(int i= 0 ;i< a.length-1;i++){
		//里层循环是从外层循环的下一个元素,到数组的最后一个元素
		for(int j = i+1;j<a.length;j++){
			if(a[i] > a[j]){
			//每一个元素与下一元素进行对比
				temp = a[i];
				a[i] = a[j];
				a[j] = temp;
			}
		}
	}
}

2、冒泡排序

2.1、原理

数组中的相邻元素进行对比,对比结果是否符合预期
升序则判断谁大,将较大的值换到后面
降序则判断谁小,将较小的值换到后面;

**** 升序排序例子,降序同理,只是调整一下判断逻辑
1、升序排序说明
int[] a = {4,1,3,2};

(1)第一个冒泡数产生(4)
a[0]-a[1]比较 =>{1432};
a[1]-a[2]比较 =>{1342};
a[2]-a[3]比较 =>{1324};

(2)第二个冒泡数产生(3)
a[0]-a[1]比较 =>{1324};
a[1]-a[2]比较 =>{1234};

(3)第三个冒泡数产生(2)
a[0]-a[1]比较 =>{1234};

2.2、代码实现

**** 升序排序例子,降序同理,只是调整一下判断逻辑
/***
一次冒泡,仅为说明原理所写
每一个元素与相邻元素进行对比,不包括最后一个元素
循环就是0~(a.length-1)
**/
int[] a = {4,1,3,2};
int temp =0;
for(int j =0;j<a.length-1;j++){
	if(a[j] >a[j+1]){
		temp = a[j];
		a[j] = a[j+1];
		a[j+1] = temp;
	}
}

/***
循环次冒泡,进行排序
**/
public static void bubbleSort(int[] a){
	int temp = 0;
	/**
	i  
	代表最多需要少次冒泡
	**/
	for(int i = 0;i<a.length-1;i++){
		/**
		1、从索引0出开始,与下一个元素进行比较,
		不包括最后一个元素
		不包括已经产生的冒泡的数
		***/
		for(int j =0;j<a.length-1-i;j++){
			if(a[j] >a[j+1]){
				temp = a[j];
				a[j] = a[j+1];
				a[j+1] = temp;
			}
		}
	}
	
}
### 备注(打印数组的方法-测试用)

/**
	   格式化打印数组
	   返回值: void
	   方法参数: 数组
	*/
	public static void printArray(int[] arr){
		System.out.print("[");
		for(int i = 0 ; i < arr.length ; i++){
			if( i == arr.length-1 ){
				System.out.print(arr[i]+"]");
			}else{
				System.out.print(arr[i]+",");
			}
		}
		System.out.println();
	}

此文章纯属个人总结,如有问题,欢迎评论指正;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值