冒泡排序、选择排序的区别

冒泡排序:
/**
 * @Title: 冒泡排序
 * @Description: 在N个数的无序队列里将相邻两个数依次进行比较,将小数调换到前面, 逐次比较,直至将最大的数移到最后;
 * 				  下一次将前面剩下的N-1个数继续比较最大,并将这段中最大数放到N-1这段数组的最后,即完成将第二大的数移至倒数第二位;
 * 				 ...(依此类推)
 * @param arr
 * @return int[]
 */
public int[] bubbleSort(int[] arr){
	for(int i = 0; i < arr.length - 1; i++){
		//每次比较相邻两个数,将较大的放到后面;循环终止时即完成将arr[0]到arr[arr.length - i - 1]中最大的数放到最后
		for(int j = 0; j < arr.length - i - 1; j++){
			if(arr[j] > arr[j+1]){
				int temp = arr[j+1];
				arr[j+1] = arr[j];
				arr[j] = temp;
			}
		}
	}
	return arr;
}

选择排序:
/**
 * @Title:选择排序
 * @Description: 用一个变量记录最小值下标,第一次在N个数的无序队列里将记录变量与遍历数依次进行比较,若遍历值小于记录变量对应值,则用记录变
 * 					量记录其下标,当遍历完成后,记录变量中保存下标即为这段数组中最小值下标,然后用记录的下标元素和第一个元素对调;
 * 				下一次遍历从二个开始对比查找最小值下标,遍历完成后即得下标为2到N的值中最小的值下标,然后将记录变量记录的下标与第二个元素对调,
 * 				再下一次从第三个元素开始对比查找最小值下标,依此类推。
 * @param arr
 * @return int[]
 */
public int[] selectSort(int[] arr){
	for(int i = 0; i < arr.length - 1; i++){
		int min = i; //数组下标
		//用min记录最小值下标,默认为i,依次与后面的数比较大小,若其数值小于arr[min],则用min记录这个值下标
		for(int j = i + 1; j < arr.length; j++){
			if(arr[j] < arr[min])
				min = j;
		}
		//若最小值下标不是默认的i,则交换两者位置
		if(min != i){
			int temp = arr[i];
			arr[i] = arr[min];
			arr[min] = temp;
		}
	}
	return arr;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值