冒泡排序 Java

本文深入解析冒泡排序算法的核心思想、实现原理及优化技巧,包括其基本流程、时间复杂度分析以及实际应用案例。通过具体代码示例,帮助读者理解并掌握冒泡排序这一经典排序算法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

排序的方法有很多,一般言,很难说哪一种方法是最好的。每一种方法都有优缺点,有各自应用的环境。排序一般会进行两种操作1、比较两关键字大小;2、将记录从一个位置移到另一个位置;前者通常来说是必要的,而后者则可以通过改变记录存储方式来避免。后面还会用一篇专门的文章来讨论一下怎么来分析这些算法的复杂度。还请您留意,应该这就是最近一周出来!(2015.6.20前)


常见的内部排序算法大致可以分为以下六类共十种

选择排序:(1)直接选择排序;(2)堆排序;

交换排序:(3)冒泡排序;(4)快速排序;

插入排序: (5)直接插入 排序; (6)折半插入排序;(7)Shell排序;

(8)归并排序;

(9)筒式排序;

(10)基数排序;


下面就将用十篇文章分别归纳这十种排序,这一篇是冒泡排序:

冒泡排序是大家最早涉及的排序算法之一,算法思想简单,容易实现。n个数据排序,一般需要进行n-1趟冒泡过程(如果其中某一趟没有数据交换的发生,则提前结束,也就是比较趟数小于n-1)。冒泡排序非常形象,简单说就是从第一个元素开始和后面一个元素比较,如果前面大于后面,则交换它们;然后,再让第二个和第三个比较,第二个如果大于第三个,则也交换;这样不断下去,就跟冒泡一样,最大的就留到了最后。下次再从1到n-1,最后把第二大元素找出来放到n-1位置。如果过程中某次没有发生交换,则提前结束排序。源代码如下:

package mymork.c20150614;

//a example to SelectSort
//blog.youkuaiyun.com/code_7
//HanChun at XiDian University
//输入数据是:7 2 9 1 4 3 5

import java.util.Arrays;

public class BubbleSort {

	public static int[] selectsort(int datas[]){
		for(int i = 0; i < datas.length; i ++ ){
			boolean flag = false;		//标志位,判断是否能提前结束排序
			for(int j = 0; j < datas.length - i - 1; j++){
				if(datas[j] > datas[j+1]){
					int tem;
					tem = datas[j];
					datas[j] = datas[j+1];
					datas[j+1] = tem;
					flag = true;
				}
			}
			if(!flag){
				return datas;
			}
		}
		return datas;		
	}
	
	public static void main(String[] args) {
		int[] datas = new int[]{7, 2, 9, 1, 4, 3 ,5};
		System.out.println("排序之前的元素为:" + Arrays.toString(datas));
		System.out.println("排序之后的元素为: " +  Arrays.toString(selectsort(datas)));
	}
}










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值