冒泡排序1
Posted zhuzehua
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了冒泡排序1相关的知识,希望对你有一定的参考价值。
冒泡排序一:
可以利用这样排序来排序:将第一个元素和它后面的元素比较大小,如果比后面的某个元素大,就将这两个元素互换位置,直到最后一个元素,一轮排序完毕,获得一个最小值在新数组的第一位。接着再对第二个元素重复以上操作,这样第二个元素也是除第一个元素之外最小的,一直到第n-1个元素,和第n个元素比较,如果小于n,结束循环,如果大于n,交换位置之后结束循环。
循环次数:(n-1)+(n-2)+……+1
package com.zzh; import java.util.Scanner; import javax.sound.midi.Soundbank; public class Main { //冒泡排序1 public static void main(String[] args) { Scanner scanner=new Scanner(System.in); int n=scanner.nextInt(); int[] num=new int[n]; int i,j,temp; for(i=0;i<n;i++) { num[i]=scanner.nextInt(); } for(i=0;i<n-1;i++) { for(j=i+1;j<n;j++) { if (num[i]>num[j]) { temp=num[i]; num[i]=num[j]; num[j]=temp; } } } for(i=0;i<n;i++) { System.out.print(num[i]+" "); } } }
冒泡排序二:
待排数组:12 45 1 545 21 65 888
方法:将数组中相邻的元素两两比较,如果下标i的元素大于下标i+1的元素,则交换位置,一轮排序完成之后,数组中的最大值挪到新数组的最后,下标为n-1;新一轮排序的时候,依然从第一个元素到倒数第二个元素之间两两比较,得到一个最大值放在倒数第二位,这样的话,经过n-1轮排序之后,即可获得一个从小到大排序的新数组
package com.company; import java.util.Scanner; import javax.sound.midi.Soundbank; public class Main { //冒泡排序1 public static void main(String[] args) { Scanner scanner=new Scanner(System.in); int n=scanner.nextInt(); int[] num=new int[n]; int i,j,k,temp; for(i=0;i<n;i++) { num[i]=scanner.nextInt(); } //接下来对数组进行排序,一共要进行num.length-1轮排序 for(j=0;j<num.length-1;j++) { //从第一个元素到倒数第二个元素 for(i=0;i<n-1;i++) { if (num[i]>num[i+1]) { temp=num[i]; num[i]=num[i+1]; num[i+1]=temp; } } n--;//每一轮排序结束,最大值存在数组末尾,所以下一轮排序的时候,n的值减1,减少比较次数 } for(j=0;j<num.length;j++) { System.out.print(num[j]+" "); } } }
以上是关于冒泡排序1的主要内容,如果未能解决你的问题,请参考以下文章