Java学习手册:(数据结构与算法-排序)冒泡排序

算法思想:冒泡排序属于交换类排序,对n个元素的序列进行排序时,如果初始序列全部有序,则冒泡过程需要进行(n-1)次元素比较,0次元素值交换。如果初始序列完全逆序,则冒泡过程中需要进行(n(n+1)/2)次元素值比较,(n(n+1)/2)次元素的交换。

例子:举个栗子,对5,3,8,6,4这个无序序列进行冒泡排序。首先从后向前冒泡,4和6比较,把4交换到前面,序列变成5,3,8,4,6。同理4和8交换,变成5,3,4,8,6,3和4无需交换。5和3交换,变成3,5,4,8,6,3.这样一次冒泡就完了,把最小的数3排到最前面了。对剩下的序列依次冒泡就会得到一个有序序列。冒泡排序的时间复杂度为O(n^2)。

package com.haobi;
/*
 * 冒泡排序
 */
public class BubbleSort {
	public static void bubbleSort(int[] array) {
		int i,j;
		int len = array.length;
		int temp;
		for(i=0;i<len-1;++i) {
			for(j=len-1;j>i;--j) {
				if(array[j]<array[j-1]) {
					temp = array[j];
					array[j] = array[j-1];
					array[j-1] = temp;
				}
			}
		}
	}
	public static void main(String[] args) {
		int[] array = {38,5,19,26,49,97,1,66};
		bubbleSort(array);
		for(int i=0;i<array.length;i++) {
			System.out.print(array[i]+" ");
		}
	}
}

程序输出结果如下:

1 5 19 26 38 49 66 97 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值