三大排序:冒泡排序,选择排序,插入排序

最近在复习corejava基础,又有些遗忘了,突然想起用博客来记录一下,回来一看,离上次更新刚好已经过了两个月了…
写一下三大基础的排序吧~以后学到了其他五大排序再接着这篇文章来更新。
一:冒泡排序
冒泡排序的基本思想就是两个数之间相互比较互换,通过一系列的比较排序,通过交换,数组里面的元素就会按照降序/升序进行排序操作。
代码实现如下:

import java.util.Arrays;
public class Test{
	public static void main(String[] args) {
		Test x = new Test();
		int[] arr = {3,9,5,8,4,6,1,7};
		x.bubbleSort(arr);
		System.out.println(Arrays.toString(arr));
	}
	public void bubbleSort(int[] arr) {
		for(int i = 0;i < arr.length-1;i++) {
			for(int j = 0;j < arr.length-i-1;j++) {
				if(arr[j] > arr[j+1]){
					arr[j] = arr[j] ^ arr[j+1];
					arr[j+1] = arr[j+1] ^ arr[j];
					arr[j] = arr[j] ^ arr[j+1];
				}
			}
		}
	}
}

二:选择排序
选择排序的基本思想是在数组中将最小的元素或最大的元素挨个依次拿出来排序,通过n次的比较取出后,就可以得到排序的结果。
int[] arr = {3,9,5,8,4,6,1,7};
第一轮排序:把1通过比较把1取出来和第一个元素位置互换
1,9,5,8,4,6,3,7
第二轮排序:剩下的元素中,3为最小数,所以把3取出与第二个元素互换
1,3,5,8,4,6,9,7
依次类推>>>
第三轮排序:1,3,4,8,5,6,9,7
第四轮排序:1,3,4,5,8,6,9,7
第五轮排序:1,3,4,5,6,8,9,7
第六轮排序:1,3,4,5,6,7,9,8
第七轮排序:1,3.4,5,6,7,8,9
代码实现如下:

import java.util.Arrays;

public class Test1 {
	public static void main(String[] args) {
		Test1 x = new Test1();
		int[] arr = {3,9,5,8,4,6,1,7};
		x.choiceSort(arr);
		System.out.println(Arrays.toString(arr));
	}
	public void choiceSort(int[] arr) {
		for(int i = 0;i < arr.length-1;i++) {
			//记录下标位置
			int index = i;
			int now = i;
			//如果小于比较的第一个值,则把下标换为它
			for(int j = i+1;j < arr.length;j++) {
				if(arr[index] > arr[j]) {
					index = j;
				}
			}
			//如果上面的index变了,那么说明进行了互换,则index现在的值为所有数中的最小值的下标,把两个值的下标互换
			if(index != now) {
				System.out.print(index+"/"+now+ " ");
				arr[index] = arr[index] ^ arr[now];
				arr[now] = arr[index] ^ arr[now];
				arr[index] = arr[index] ^ arr[now];
			}
		}
	}
}

三:插入排序:
插入排序的基本思想为将数组的值分为两个区域,一个插入好的区域,一个待插入的区域。
int[] arr = {3,9,5,8,4,6,1,7};
|3,9,5,8,4,6,1,7 |左边为插入好的区域,右边为待插入区域,将右边的待插入区域跟左边的元素值大小作比较,在合适的地方进行插入操作。
比如通过插入排序来排好arr数组中的元素
第一轮插入排序:3|9,5,8,4,6,1,7
第二轮插入排序:3,9|5,8,4,6,1,7
第三轮插入排序:3,5,9|8,4,6,1,7
第四轮插入排序:3,5,8,9|4,6,1,7
第五轮插入排序:3,4,5,8,9|6,1,7
第六轮插入排序:3,4,5,6,8,9|1,7
第七轮插入排序:1,3,4,5,6,8,9|7
第八轮插入排序:1,3,4,5,6,7,8,9|
代码如下:

import java.util.Arrays;

public class Test2 {
	public static void main(String[] args) {
		Test2 x = new Test2();
		int[] arr = {3,9,5,8,4,6,1,7};
		x.insertSort(arr);
		System.out.println(Arrays.toString(arr));
	}
	public void insertSort(int[] arr) {
		for(int i = 0;i < arr.length;i++) {
			//记录下标位置以及下标值
			int index = i;
			int now = arr[i];
			for(int j= i-1;j >= 0;j--) {
				//如果小于就把当前元素位置往后推一位,通过记录下标位置
				if(now < arr[j]) {
					arr[j+1] = arr[j];
					index = j;
				}
				else {
					break;
				}
				//如果发生了互换,就把位置的下标值给它
				if(index != i) {
					arr[index] = now;
				}
			}
		}
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值