java冒泡排序从大到小数组(java单例模式代码)

冒泡排序(一): 假设有5个数字35,56,34,22,16在一个int数组中,要求按从小到大排序输出如何采用冒泡排序算法呢? 1、基本思想 首先从数组的最左边开始,取出第0号位置(左边)的数据和第1号位置(右边)的数据,如果左边的数据大于右边的数据,则进行交换,否而不进行交换。接下来右移一个位置,取出第1个位置的数据和第2个位置的数据,进行比较,如果左边的数据大于右边的数据,则进行交换,否则不进…

冒泡排序(一):

假设有 5 个数字 35,56,34,22,16 在一个 int 数组中,要求按从小到大排序输出如何采用冒泡排序算法呢?

1、基本思想

首先从数组的最左边开始,取出第 0 号位置(左边)的数据和第1号位置(右边)的数据,如果左边的数据大于右边的数据,则进行交换,否而不进行交换。接下来右移一个位置,取出第 1 个位置的数据和第 2 个位置的数据,进行比较,如果左边的数据大于右边的数据,则进行交换,否则不进行交换。沿着这个算法一直排序下去,最大的数就会冒出水面,这就是冒泡排序.

2、排序过程。下面我们来模拟一下冒泡排序假设有数组{35,56,34,22,16}

第一轮排序:

第一次排序:35和56比较,56更大这里我们什么都别管 顺序为:35,56,34,22,16

第二次排序:56和34比较,56更大我们让56和34交换 顺序:35,34,56,22,16

第三次排序: 56和22比较,56更大,交换位置 顺序:35,34,22,56,16

第四次排序: 56比16比较,56更大,交换位置 顺序: 35,34,22,16,56

第一轮比较了四次

第二轮排序:

第一次排序:35和34比较,35更大,交换位置 顺序:34,35,22,16,56

第二次排序:35和22比较,35更大,交换位置 顺序:34,22,35,16,56

第三次排序:35和16比较,35更大,交换位置 顺序:34,22,16,35,56

第二轮比较了三次

第三轮排序:

第一次排序:34和22比较,34更大,交换位置 顺序:22,34,16,35,56

第二次排序:34和16比较,34更大,交换位置 顺序:22,16,34,35,56

第三轮比较了两次

第四轮排序:

第一次排序:22和16比较,22更大,交换位置 顺序:16,22,34,35,56

第四轮比较了一次

最终顺序:16,22,34,35,56


从上面我们看到了比较了 N-1 次,那么第二遍就为 N-2 次比较了,如此类推,比较次数的公式如下:

(N-1) + (N-2)+…+1=((N-1)*N)/2

所以以上总共比较次数为((5-1)*5)/2=10

代码实现如下:

/**
 * ClassName:BubbleSort <br/>
 *
 * Function: TODO ADD FUNCTION. <br/>
 * Reason: TODO ADD REASON. <br/>
 * Date: 2021年11月4日 上午11:23:32 <br/>
 * 
 * @author Administrator
 * @version
 * @since JDK 1.8
 * @see
 */
public class BubbleSort {
	public static void main(String[] args) {
		int[] data = { 35, 56, 34, 22, 16 };
		for (int i = 0; i < data.length; i++) {
			int min = i;
			// 选择出最小值的下标
			for (int j = i + 1; j < data.length; j++) {
				if (data[j] < data[min]) {
					min = j;
				}
			}
			// 将最小值放到未排序记录的第一个位置
			if (min != i) {// min>i
				int temp = data[i];
				data[i] = data[min];
				data[min] = temp;
			}
		}
		// 循环输出数组中的元素
		for (int i = 0; i < data.length; i++) {
			System.out.println(data[i]);
		}
	}
}
Java经典算法-冒泡排序

冒泡排序(二):

1、基本思想

两两比较待排序数据元素的大小,发现两个数据元素的次序相反时即进行交换,直到没有反序的数据元素为止。

2、排序过程

设想被排序的数组R[1..N]垂直竖立,将每个数据元素看作有重量的气泡,根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R,凡扫描到违反本原则的轻气泡,就使其向上”漂浮”,如此反复进行,直至最后任何两个气泡都是轻者在上,重者在下为止。

【示例】:
49 13 13 13 13 13 13 13
38 49 27 27 27 27 27 27
65 38 49 38 38 38 38 38
97 65 38 49 49 49 49 49
76 97 65 49 49 49 49 49
13 76 97 65 65 65 65 65
27 27 76 97 76 76 76 76
49 49 49 76 97 97 97 97

代码实现:

/**
 * ClassName:BubbleSort <br/>
 *
 * Function: 冒泡排序:执行完一次内for循环后,最小的一个数放到了数组的最前面(跟那一个排序算法* 不一样)。相邻位置之间交换
 * Reason: TODO ADD REASON. <br/>
 * Date: 2021年11月4日 上午11:23:32 <br/>
 * 
 * @author Administrator
 * @version
 * @since JDK 8
 * @see
 */
public class BubbleSort {
	/**
	 * 排序算法的实现,对数组中指定的元素进行排序
	 * 
	 * @param array 待排序的数组
	 * @param from  从哪里开始排序 11 * @param end 排到哪里 11 * @param c 比较器 11
	 */

	public void bubble(Integer[] array, int from, int end) {
		// 需array.length - 1轮比较
		for (int k = 1; k < end - from + 1; k++) {
			// 每轮循环中从最后一个元素开始向前起泡,直到i=k止,即i等于轮次止
			for (int i = end - from; i >= k; i--) {
				// 按照一种规则(后面元素不能小于前面元素)排序
				if ((array[i].compareTo(array[i - 1])) < 0) {
					// 如果后面元素小于了(当然是大于还是小于要看比较器实现了)前面的元素,则前后交换
					swap(array, i, i - 1);
				}
			}
		}
	}

	/**
	 * 交换数组中的两个元素的位置
	 * 
	 * @param array 待交换的数组
	 * @param i     第一个元素
	 * @param j     第二个元素
	 */
	public void swap(Integer[] array, int i, int j) {
		if (i != j) {// 只有不是同一位置时才需交换
			Integer tmp = array[i];
			array[i] = array[j];
			array[j] = tmp;
		}
	}

	public static void main(String[] args) {
		Integer[] intgArr = { 35, 56, 34, 22, 16 };
		BubbleSort bubblesort = new BubbleSort();
		bubblesort.bubble(intgArr, 0, intgArr.length - 1);
		for (Integer intObj : intgArr) {
			System.out.print(intObj + \" \");
		}
	}
}
Java经典算法-冒泡排序

另外一种实现方式:

/**
 * ClassName:BubbleSort <br/>
 *
 * Function: 冒泡排序:执行完一次内for循环后,最大的一个数放到了数组的最后面。相邻位置之间交换 Reason: TODO ADD REASON.
 * <br/>
 * Date: 2021年11月4日 上午11:23:32 <br/>
 * 
 * @author Administrator
 * @version
 * @since JDK 8
 * @see
 */
public class BubbleSort {
	public static void main(String[] args) {
		int[] a = { 35, 56, 34, 22, 16 };
		bubble(a);
		for (int num : a) {
			System.out.print(num + \" \");
		}
	}

	public static void bubble(int[] a) {
		for (int i = a.length - 1; i > 0; i--) {
			for (int j = 0; j < i; j++) {
				if (new Integer(a[j]).compareTo(new Integer(a[j + 1])) > 0) {
					swap(a, j, j + 1);
				}
			}
		}
	}

	public static void swap(int[] a, int x, int y) {
		int temp;
		temp = a[x];
		a[x] = a[y];
		a[y] = temp;
	}
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2022年5月13日 下午3:51
下一篇 2022年5月13日 下午3:52

相关推荐

  • 代理记账怎么收费,2020代理记账公司收费标准

    什么是代理记账? 代理记账是独立于企业外的代理记账机构,为企业提供财务记账、税务报送、财务咨询等业务的服务活动 代理记账的流程 第,一步:代理记账机构首先会和企业签定一份代理记账合同,明确双方的权力和义务。 第二步:一般月末终了,代理记账机构会去企业收取各类单据。 第三步:代理记账机构收取企业的单据后,进行整理分类,最后编制记账凭证,登记入账。 第四步:编制好凭证、账册后,报送各类报表、缴纳各类税…

    2022年8月11日
    550
  • 在广东摆地摊卖什么好,广东最受欢迎的7种街头小吃

    随着炎热盛夏到来,以及今年的“地摊经济”盛行,让各个地区的地摊和夜市彻底火爆起来,地摊小吃的创业成本低也成为了很多创业新手的首选,但地摊小吃看似简单,实则竞争激烈,尤其在步行街这类人流量大的夜市街道,满条步行街都摆满了各种美味小吃,但只有零碎几个摊位是特别火爆的,那么如果打算从事街边小吃创业的话,有哪些更适合创业新手去选择? 在广东夜市地摊,7种街头小吃最火爆,年轻人追捧不已,基本都吃过,创业新手…

    2022年9月1日
    1190
  • 业务推广方案有哪些方法,6个步骤引流客源

    哪些企业和商家已经加入分佣推广(有赞客)? 什么是分佣推广(有赞客)? 分佣推广(有赞客)是国内知名的商家服务公司“有赞”旗下的电商营销分佣推广平台。 1、集合千万优质商品和百万忠实推广者。 2、吸引大量的网红主播、KOL、自媒体帮你卖货,快速实现成交增长。 3、先推广、成交后付佣金。 为什么加入分佣推广(有赞客)? 1、消费者市场下沉、社交红利爆发、网红直播及KOL带货能力超群的背景下,赶紧加入…

    2022年5月27日
    750
  • 手机苹果价格(苹果手机最新报价表)

    三月份科技数码行业会非常热闹,因为苹果公司每年三月份基本都会举办苹果春季新品发布会,虽然苹果春季新品发布会的热度不如下半年的苹果秋季新品发布会,但是在上半年也同样算是一个盛会了,全球对这场发布会感兴趣的人非常多,而且根据种种迹象表明,苹果公司有望在此次春季新品发布会上发布新款苹果手机iPhoneSE3。 伴随着有关苹果春季新品发布会的消息越来越多,与此同时有网友发现多款苹果手机都开始大降价了,其中…

    2022年5月8日
    810
  • 防晒霜哪个牌子最好用(口碑最好的防晒霜推荐)

    这几天就要多发一点有关于防晒霜的了,毕竟快要到夏天了,从目前来说的话天气基本上也开始回暖,紫外线强度也逐渐上升,冬春两季的防晒霜可能不足以撑的住春末夏初,夏天的话紫外线强度真的不是盖的,曾经小咔就因为没有涂防晒霜出门,差不多10分钟已经开始泛红了。 回来黑了一个度 仅仅只是那么短的出门时间,就被晒伤后续也因为一些原因晒黑,所以对于防晒这块,除了要做好硬防晒也要做好软防晒,软硬兼施才是王道,那么今天…

    2022年10月22日
    610
  • 虚拟主机哪家稳定,稳定免费虚拟主机排行

    中小企业在建站时,由于受资金成本的限制,最先考虑的空间产品就是虚拟主机。那么哪家虚拟主机最好用就成了大家普遍关心的问题。好用的虚拟主机不仅能保障网站稳定运行,还能使中小企业在后期的管理中方便省心,减少迁移的麻烦和成本。 西部数码是国内成立已有17年的品牌主机提供商,一直以专业的水准为客户提供优质服务,其虚拟主机基于庞大的云计算平台,管理便捷、性能稳定,有多层安全防护策略。 一、虚拟主机管理方面 用…

    2022年6月28日
    620
  • 最好的seo优化公司有哪些,选择seo优化公司的须知要项

    网络seo推广公司都有哪些靠谱?主要看资质,seo不单单看效果而且看外链引流的质量,通过是否白帽的方式去做。不然网站容易降权被K,以后想有排名还有流量就难了。而且技术不外包,方便后期服务对接问题。你可以私信,给你推荐一些建议资源。 SEO有许多优化公司。一些人说他们是最好的,而另一些人说他们同龄人的实力不好。事实上,这种片面的措辞,谁能证明自己的实力是好的,公司依靠的是什么?一点也不。对于客户来说…

    2022年7月9日
    580
  • seo优化难学吗,学seo需要学什么专业

    学习SEO网站优化难吗?不难,SEO可以说是在网络营销行业中相对简单的一项技能,编辑撰写文章是基本技能。这个技能小学就开始学习了,再学一点营销知识,再学一点优化常识,就可以开始进行基础优化,优化的学习门槛和难度都低。 为什么大多数人做不出效果,很大一部分原因,在于没有坚持。回想,在小学,有几个人天天坚持写日记,周周写周记,每次写作文都很痛苦,不知道写什么。所以虽然网站优化的门槛低,难度小,不等于每…

    2022年6月15日
    630
  • 内容付费平台有哪些,十大付费知识平台工具

    大家都说知识就是力量,知识就是财富,这句话在互联网时代被表现得更加的淋淋尽致,而且也更加的直接,许多知识的获取都不是免费的,而是需要付出直金白银的,这就是网络上流行的付费知识平台。 顾名思义,付费知识平台就是通过发布知识来获取收入,而在这上面想要看到自己需要的知识,就需要支付相应的费用,这是也随着移动支付的兴起而变得越来越流行,现在的付费知识平台很多,你知道2019年著名的付费知识平台有哪些了,下…

    2022年6月24日
    1030
  • 肯德基全家桶半价是怎么操作的,肯德基全家桶半价教程

    现在的小年轻都不兴过生日啥的了 毕竟年年都是十八岁 有啥好过的呢 谁还不是个小仙女/小帅哥呢 但是生日可以不过 这些生日优惠你不能!不知道! 本着有便宜不占,王八蛋的理念 请乡亲父老们请奔走相告啊~ 因为错过了这条你就真的可能错过了一个亿 吃吃喝喝篇 信息汇总 目录必胜客/海底捞/满记甜品/星巴克/汉堡王/KFC/小龙坎/瑞可爷爷/DQ冰雪皇后/多伦多自助 以上排名不分前后,对生日优惠有疑惑者,请…

    2022年8月11日
    590

发表回复

登录后才能评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信