冒泡排序的算法
思想(升序):
1.比较两个相邻数据之间的大小,保证大的值在后面,最后,经过一次排序后会选出本次数组中的最大值,放在最后一位;
2.在排除上一次的最大值数组中,再选出一位最大值放在最后一位;
3.直到排除(选出)数组长度-1个最大值后,排序完成;
比如:数组为{10 ,34 ,300 ,56 ,6, 56 ,7 ,87 , 5}数组长度为9;
public class find_em { public static void main(String[] args){ int arr[]={10,34,300,56,6,56,7,87,5}; System.out.println("原始数据:"); for(int i=0;i<arr.length;i++){ System.out.print(arr[i]+"\t"); } System.out.println("\n排序(升序):"); //冒泡排序 for(int j=1;j<arr.length;j++){ //控制循环次数,也就是选出几个最大值后停止 for(int i=0;i<arr.length-j;i++){ //交换数据,选出最大值 if(arr[i]>arr[i+1]){ //如果是降序只要将这里改为<号即可 int t=arr[i+1]; arr[i+1]=arr[i]; arr[i]=t; } } for(int i=0;i<arr.length;i++){ System.out.print(arr[i]+"\t"); } System.out.println("选出本次最大值:"+arr[arr.length-j]); } System.out.println("排序后的数据:"); for(int i=0;i<arr.length;i++){ System.out.print(arr[i]+"\t"); } } }
结果:
原始数据: 10 34 300 56 6 56 7 87 5 排序(升序): 10 34 56 6 56 7 87 5 300 选出本次最大值:300 10 34 6 56 7 56 5 87 300 选出本次最大值:87 10 6 34 7 56 5 56 87 300 选出本次最大值:56 6 10 7 34 5 56 56 87 300 选出本次最大值:56 6 7 10 5 34 56 56 87 300 选出本次最大值:34 6 7 5 10 34 56 56 87 300 选出本次最大值:10 6 5 7 10 34 56 56 87 300 选出本次最大值:7 5 6 7 10 34 56 56 87 300 选出本次最大值:6 排序后的数据: 5 6 7 10 34 56 56 87 300
比较次数:36
交换次数:20
如果是此文是转载文章,本人会附上转载链接,此篇文章的版权归原创作者所属,如果侵权请与我联系,我会删除此文。
若没有标明转载链接,此篇文章属于本人的原创文章,其版权所属:
作者:feiquan
出处:http://www.cnblogs.com/feiquan/
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
大家写文都不容易,请尊重劳动成果~ 这里谢谢大家啦(*/ω\*)
若没有标明转载链接,此篇文章属于本人的原创文章,其版权所属:
作者:feiquan
出处:http://www.cnblogs.com/feiquan/
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
大家写文都不容易,请尊重劳动成果~ 这里谢谢大家啦(*/ω\*)