冒泡排序算法原理及JAVA实现

冒泡排序法:关键字较小的记录好比气泡逐趟上浮,关键字较大的记录好比石块下沉,每趟有一块最大的石块沉底。

算法本质
:(最大值是关键点,肯定放到最后了,如此循环)每次都从第一位向后滚动比较,使最大值沉底,最小值上升一次,最后一位向前推进(即最后一位刚确定的最大值不再参加比较,比较次数减1)


复杂度: 时间复杂度 O(n2) ,空间复杂度 O(1)

JAVA源代码(成功运行,需要Date类)

	public static void bubbleSort(Date[] days) {
		int len = days.length;
		Date temp;
		for (int i = len - 1; i >= 1; i--) {
			for (int j = 0; j < i; j++) {
				if (days[j].compare(days[j + 1]) > 0) {
					temp = days[j + 1];
					days[j + 1] = days[j];
					days[j] = temp;
				}
			}
		}
	}
class Date {
	int year, month, day;

	Date(int y, int m, int d) {
		year = y;
		month = m;
		day = d;
	}

	public int compare(Date date) {
		return year > date.year ? 1 : year < date.year ? -1
				: month > date.month ? 1 : month < date.month ? -1
						: day > date.day ? 1 : day < date.day ? -1 : 0;
	}

	public void print() {
		System.out.println(year + " " + month + " " + day);
	}
}

package testSortAlgorithm;

public class BubbleSort {
	public static void main(String[] args) {
		int array[] = { 5, 6, 8, 4, 2, 4, 9, 0 };
		bubbleSort(array);
		for (int i = 0; i < array.length; i++) {
			System.out.println(array[i]);
		}
	}

	public static void bubbleSort(int array[]) {
		int temp;
		for (int i = array.length - 1; i > 0; i--) {
			for (int j = 0; j < i; j++) {
				if (array[j] > array[j + 1]) {
					temp = array[j];
					array[j] = array[j + 1];
					array[j + 1] = temp;
				}
			}
		}
	}
}


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值