冒泡排序

     之所以叫冒泡排序,是因为排序的过程就像气泡由水底一直往水面升。
假设如下数组(A):
数组34521
下标01234
     第一次排序过程:
          1、3<4:不变,结果:A={3,4,5,2,1}。
          2、4<5:不变,结果:A={3,4,5,2,1}。
          3、5>2:5与2交换位置,结果A[2]=2,A[3]=5,A={3,4,2,5,1}。
          4、5>1:5与1交换位置,结果A[3]=1,A[4]=5,A={3,4,2,1,5}。
第一次排序结果:
数组34215
下标01234
     第一次排序进行了4次比较。
第二次排序结果:
数组32145
下标01234
第二次排序,只需要做3次比较即可。
第三次排序结果:
数组21345
下标01234
第四次排序结果:
数组12345
下标01234

     算法复杂度计算:由(N-1)+(N-2)+…+1=N*(N-1)/2得出O(N*N),其中N为数组数据项。所以冒泡排序的算法复杂度:O(N*N)。       以下为Java实现:
public class BubbleSort {

	static int[] array;

	
	//冒泡排序
	public static int [] action() {

		int temp;
		//每一次循环(i)都将一个最大值放到数组最后面,下一个循环(j)将减少一次对比
		for (int i = array.length-1; i >1; i--) { 

			for (int j = 0; j < i; j++) {

				int left = array[j];

				int right = array[j + 1];

				if (right < left) {
					temp = right;
					array[j+1] = left;
					array[j] = temp;
				}
			}

		}
		
		return array;
	}
	
	public static void main(String[] args) {
		
		array=new int []{40,5,1,7,10,3,9,12,40};
		int [] result=action();
		for (int  string : result) {
			System.out.println(string);
		}
	}

}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值