冒泡排序算法的原理如下:
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
比如说
我现在有个数组 {8,6,5,11}
第一大次
从第一个数开始,8如果碰到比自己小的数就会把它和换个位置,开始时,
第一次8和6比较,6比8小,6和8换位置。{6,8,5,11}
第二次,还是一样,5比8小。{6,5,8,11}
第三次 和11比较,不用变。{6,5,8,11}
第一次比较了3次 此时最大的必定在最后一个数
第二大次
从第一个数开始,现在的数组时 {6,5,8,11}
第一次 6和5比较,换位置 {5,6,8,11}
第二次6和8比较不用变 {5,6,8,11}
因为最大的在最后面 所以第2次只需要比较2次 最大和倒数第二大的都在最后面了
第三大次
只需要比较5和6不需要变 {5,6,8,11}
因为最大和倒数第二大的都在最后面了, 所以第3次只需要比较1次,此时后三个都是大的不需要比较
排序完成 {5,6,8,11}
package sort;
import java.util.Scanner;
public class BubbleSort {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("请输入需要排列的数的个数");
int sc = in.nextInt();
System.out.println("请输入要排列的数据");
int temp;
int[] arr = new int[sc];
for (int i = 0; i < sc; i++) {
arr[i]= in.nextInt();
}
for(int i=0;i<arr.length-1;i++)
for (int j = 0; j < arr.length-i-1; j++) {
if(arr[j]>arr[j+1]){
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
System.out.println("排列结果");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
}
}