基本思路:
冒泡排序是一种简单的交换类排序。其基本思路是,从头开始扫描待排序的元素,在扫描过程中依次对相邻元素进行比较,将关键字值大的元素后移。每经过一趟排序后,关键字值最大的元素将移到末尾,此时记下该元素的位置,下一趟排序只需要比较到此位置为止,直到所有元素都已有序排列。
冒泡排序需要定义两层for循环,每次取出循环位置的数值与下一个位置的数值进行比较,如果数组大于或者小于(由代码中的if逻辑判断)则交换两个数值在集合中的位置。
冒泡排序算法的运作如下:
- 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
- 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
- 针对所有的元素重复以上的步骤,除了最后一个。
- 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
package cn.zhaoqiang.tuxing; /* * 冒泡排序 * * 一位老师的黄金法则(出自于微冷的雨) * 口诀: * 1.内外初值0开始 * 2.外层结束需-1,内层减i再-1 * 3.打擂算法做对比,对比j和j+1 * 4.如若不想报异常,等号万万不能要 * */ public class mppx { public static void main(String[] args) { int stop = 0; int [] num = {1,5,3,7,8}; //定义一个数组 for (int i = 0; i < num.length-1; i++) { //最多做n-1趟排序 //对当前无序区间num[0......length-i-1]进行排序(j的范围很关键,这个范围是在逐步缩小的) for (int j = 0; j < num.length-1-i; j++) { if(num[j]>num[j+1]){ //把小的值交换到后面 stop =num[j]; num[j]=num[j+1]; num[j+1]=stop; } } } for (int k = 0; k < num.length; k++) { System.out.print(num[k]); } } }